sklearn predict methode funktioniert zu gut?

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
nichtSoGuter
User
Beiträge: 92
Registriert: Mittwoch 13. April 2022, 17:40

Hallo,

ich habe die Trainigsdaten aufgesplittet in Labels und Features
Mit den Features (X) wird ein Model trainiert, welches "vorhersagen" treffen kann.
Label (y) sind die tatsächlichen Werte.

z.B.: die Daten über die Temperatur eines Gebiets über einen bestimmten Zeitraum sind Featuren Daten. Anhand dieser soll der Verbrauch an Heizöl in diesem Gebiet(=Label) "vorhergesagt" werden.
Also trainert man ein Model mit den Features. Das Model errechnet dann den Verbrauch an Heizöl der wahrscheinlich verbraucht wird. Die Ergebnisse des Models sollten bestenfalls so nah an den Label Werten sein wie möglich

Unten steht mein code bei dem ich die feature und label voneinander trenne (Achtung der Code unten hat nichts mit dem Heizölbeispiel zu tun)

Code: Alles auswählen

 
 # erstelle kopie der Trainingsdaten
trainingsdaten_kopie = strat_train_set.copy()
# y=Label, X=feature
y = trainingsdaten_kopie["median_house_value"].copy() #y ist ein Dataframe?
X = columnTransform.fit_transform(trainingsdaten_kopie) # X ist ein np.array
 
Dann trainiere ich das model mit den label und feature daten:

Code: Alles auswählen

# importiere LinearRegression Klasse
from sklearn.linear_model import LinearRegression
# erstelle Instanz der LinearRegressionKlasse
lin_reg = LinearRegression()
# Instanz lernt die Daten mit X
lin_reg.fit(X,y)
Nun möchte ich schauen wie gut die vorhersagen des Models sind:

Code: Alles auswählen

print("Prediction:", lin_reg.predict(X[:5]))
print("Labels:", list(some_label[:5]))

Die Ausgaben sind komplett identisch. Damit ist die Vorhersage entweder sehr gut oder das model funktioniert nicht so richtig bzw. ich habe einen fehler bei der implementierung der methode gemacht

Weiß jemand was der Grund ist, weshalb die vorhersage genau dem Ergebnis entspricht?

Vielen Dank im Voraus!
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Da sind zwei Riesenböcke drin.

1)
Du hast einen Datensatz strat_train_set
Daraus erstellst du die Labels y, die in der Spalte median_house_value stehen
Und dann erstellst du die Features X mit dem kompletten Datensatz, inklusive der Spalte median_house_value
und trainierst das Modell mit X und y.

2)
Wenn du dann mit den gleichen Features, mit denen du trainiert hast, dein Modell testest, kann gar nichts anderes bei rumkommen, als die Werte aus der Spalte median_house_value.

Also:

1) Die Labels müssen aus X verschwinden
2) Du muss deine Daten in Trainingsdaten und Testdaten aufteilen, das macht man so im ca. Verhältnis 80/20 oder 70/30.

Hier ein kostenloser Kurs, der das alles sehr gut erklärt.
https://courses.dataschool.io/introduct ... ikit-learn
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
nichtSoGuter
User
Beiträge: 92
Registriert: Mittwoch 13. April 2022, 17:40

Hallo ThomasL,

vielen Dank für deine große Hilfe. Das bringt mich schon sehr viel weiter:-)
Antworten