GitLab wurde erfolgreich aktualisiert. Durch regelmäßige Updates bleibt das THM GitLab sicher. Danke für Ihre Geduld.

Commit ac090fcc authored by Jens Plüddemann's avatar Jens Plüddemann

added deep learning

parent 05fb4eed
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
class DeepLearning:
def __init__(self):
pass
def get_data(self):
# Erstelle 200 Listen mit einem Wert zwischen 0 und 2
x = 2 * np.random.rand(200, 1)
# Erstelle 200 Listen mit einem Wert der Normalverteilung (positiv oder negativ), addiert dies mit 3 * dem
# x-Wert an dieser Stelle und addiert dann nochmal 4 drauf
y = np.random.randn(200, 1)
# Gebe die errechneten Werte zurück, um diese in einer Variablen zu nutzen
return x, y
def linear_regression(self):
# Erstelle Daten mit dem Daten Generator
x, y = self.get_data()
# np.ones gibt einen Array an 200 Einsen zurück
# Diese Einsen werden dann mit np.c_ zu einer Liste verkettet
# Im Endeffekt wird jedem Eintrag aus der Liste x eine 1 davor gestellt, so dass die Liste jetzt 2 Einträge hat
# [1, Wert]
x_b = np.c_[np.ones((200, 1)), x]
# np.linalg.inv berechnet die multiplikative inverse einer Matrix
# .T transponiert den Array
# .dot errechnet die Summe eines Arrays nach bestimmten Regeln (Numpy docu)
# Wir bekommen eine Liste an 2 Listen mit jeweils einen Wert als Ergebnis
beta = np.linalg.inv(x_b.T.dot(x_b)).dot(x_b.T).dot(y)
# np.linspace gibt im Interval von 0 bis 2 1000 gleichmäßig verteilte Werte zurück
# (alle haben denselben Abstand zueinander)
xx = np.linspace(0, 2, 1000)
# Plotten der Werte
plt.scatter(x, y, label="Zufallswerte")
plt.plot(xx, beta[1] * xx + beta[0], label="Regression lineare Algebra", color="red")
# cosmetics
plt.legend()
plt.title("Regression lineare Algebra")
plt.show()
def linear_regression_ml(self):
m = 200
iterations = 1000
eta = 0.1
x, y = self.get_data()
# Eine Liste an 2 Listen mit jeweils einem normal verteilten Wert
beta = np.random.randn(2, 1)
# Eine Liste an 200 Listen mit jeweils einer 1 und einem errechneten Wert zwischen 0 und 2
x_b = np.c_[np.ones((m, 1)), x]
# Für jeden Wert von 0 bis 1000
for i in range(iterations):
# .T transponiert den Array und .dot errechnert die Summe aus dem Array
gradient = 2 / m * x_b.T.dot(y - x_b.dot(beta))
# beta wird aufsubtrahiert (ist dasselbe wie beta = beta - eta * gradient)
beta -= eta * gradient
# Schreibe das Ergebnis zur Konsole
print(f"Grad Desc Batch {beta}")
def linear_regression_sci_kit(self):
x, y = self.get_data()
# Erstelle das lineare Regressions Modell und füge die Daten an
regressor = LinearRegression().fit(x, y)
print(f"SkLearn linear regression {regressor.intercept_[0], regressor.coef_[0][0]}")
if __name__ == '__main__':
data = DeepLearning()
\ No newline at end of file
data = DeepLearning()
# data.linear_regression()
# data.linear_regression_ml()
data.linear_regression_sci_kit()
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment