Die Mathe-Redaktion - 17.10.2019 13:19 - Registrieren/Login
Auswahl
ListenpunktHome
ListenpunktAktuell und Interessant ai
ListenpunktArtikelübersicht/-suche
ListenpunktAlle Links / Mathe-Links
ListenpunktFach- & Sachbücher
ListenpunktMitglieder / Karte / Top 15
ListenpunktRegistrieren/Login
ListenpunktArbeitsgruppen
Listenpunkt? im neuen Schwätz
ListenpunktWerde Mathe-Millionär!
ListenpunktFormeleditor fedgeo
Schwarzes Brett
Aktion im Forum
Suche
Stichwortsuche in Artikeln und Links von Matheplanet
Suchen im Forum
Suchtipps

Bücher
Englische Bücher
Software
Suchbegriffe:
Mathematik bei amazon
Naturwissenschaft & Technik
In Partnerschaft mit Amazon.de
Kontakt
Mail an Matroid
[Keine Übungsaufgaben!]
Impressum

Bitte beachten Sie unsere Nutzungsbedingungen, die Distanzierung, unsere Datenschutzerklärung und
die Forumregeln.

Sie können Mitglied werden. Mitglieder können den Matheplanet-Newsletter bestellen, der etwa alle 2 Monate erscheint.

Der Newsletter Okt. 2017

Für Mitglieder
Mathematisch für Anfänger
Wer ist Online
Aktuell sind 865 Gäste und 17 Mitglieder online.

Sie können Mitglied werden:
Klick hier.

Über Matheplanet
 
Zum letzten Themenfilter: Themenfilter:
Matroids Matheplanet Forum Index
Moderiert von matph
Informatik » Programmieren » Score negativ und sehr gering
Druckversion
Druckversion
Autor
Universität/Hochschule J Score negativ und sehr gering
lissy1234567
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 01.09.2017
Mitteilungen: 402
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2019-09-22 10:18


Hallo,

ich vergleiche gerade in einem erstellten Code den LinearRegressor und den DecisionTreeRegressor. Am Ende des Programms gebe ich die scores der Trainings- und Test-Daten aus, um zu sehen, wie genau das Modell ist.
Das sieht alles so aus:
python
# RAM-Preise, Datei aus GitHub passend zum Buch gedownloaded
import pandas as pd
 
# CSV-File einlesen 
preise = pd.read_csv("C:/Users/elihe/Documents/Studium Master/WS 19 und 20/Softwareprojekt/rampreise.csv", sep = ";")
 
# Daten kurz analysieren
print(preise.head())
print(preise.tail())
print(preise.shape)
# 333 Daten (0-332)
### Vorhersage der Preise mit Decision Tree Regression und Linear Regression
 
from sklearn.tree import DecisionTreeRegressor
from sklearn.linear_model import LinearRegression
import numpy as np
 
# Vorhersage: Trainings-Daten bis zum Jahr 2000, Testdaten danach, um Vorhersage zu machen
Train_data = preise[preise.Date < 2000]
Test_data = preise[preise.Date >= 2000]
 
# Schätzung von Preisen
# newaxis erhöht die Dimension
X_train = Train_data.Date[:, np.newaxis] # aus (202,) wird (202,1)
X_test = Test_data.Date[:, np.newaxis]
 
# Log-Transformation, um die Beziehung zwischen Datum und Preis zu vereinfachen
y_train = np.log(Train_data.Price)
y_test = np.log(Test_data.Price) 
# Verwende Decision Tree Regression und Linear Regression
dt = DecisionTreeRegressor()
linreg = LinearRegression()
 
# Fitting
baum = dt.fit(X_train, y_train)
linbaum = linreg.fit(X_train, y_train)
 
# Schätzung der Test-Daten
baum_schätz = baum.predict(X_test)
baum_linschätz = linbaum.predict(X_test)
 
# undo log-transform
baum_preis = np.exp(baum_schätz)
baum_linpreis = np.exp(baum_linschätz)
 
print("Schätzung mit Decision Tree: \n{}".format(baum_schätz))
print("Schätzung mit Linearer Regression: \n {}".format(baum_linschätz))
# Linear Regression besser!
# Wie genau ist das Modell ? R**2 kann auch negativ werden
print("Genauigkeit mit dem LinearRegressor: {}".format(linreg.score(X_train, y_train)))
print("Genauigkeit mit dem LinearRegressor: {}".format(linreg.score(X_test, y_test))) 
 
print("Genauigkeit mit dem DecisionTreeRegressor: {}".format(dt.score(X_train, y_train)))
print("Genauigkeit mit dem DecisionTreeRegressor: {}".format(dt.score(X_test, y_test)))

Nun lasse ich mir ja bereits davor die Schätzungen ausgeben und sehe, dass der LinearRegressor besser arbeitet, da die geschätzten Preise immer weiter sinken, während der DecisionTreeRegressor stets die gleichen Werte über die Zeit ausgibt (also in einem Schaubild eine Linie erzeugt).


Die Ausgabe des score bei LinearRegressor ist allerdings ungefähr 0.22, was für ein schlechtes Modell spricht. Kann mir da jemand meinen Programm-Code-Fehler oder Denkfehler erklären und weiterhelfen :)?



  Profil  Quote  Link auf diesen Beitrag Link
schnitzel
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 26.02.2009
Mitteilungen: 152
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2019-09-22 11:32


Hi,
der plot sieht doch vernünftig aus. Von der Vergangenheit auf die Zukunft zu schließen ist eben ein sehr schwieriges Problem. Du musst verstehen wie ein DecisionTree funktioniert, dann ergibt der Graph des DecisionTrees Sinn. Schau z.B. hier .
Viel einfacher ist es, wenn man nur "interpolieren" muss, also die Aufteilung der train, test Menge einfach random ist. (kannst du ja leicht ausprobieren) Das ist aber eine völlig andere Aufgabe.
Gruß



  Profil  Quote  Link auf diesen Beitrag Link
lissy1234567
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 01.09.2017
Mitteilungen: 402
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, vom Themenstarter, eingetragen 2019-09-22 11:40


Hi schnitzel,

den Plot verstehe ich auch ganz gut und habe ich bereits so ähnlich erwartet. Mein Problem ist eher die Ausgabe des R^2 mit dem "score"-Befehl (wenn man es so sagen kann). Ich verstehe nicht, wieso beim LinearRegressor bei den Trainingsdaten nur 0.22 rauskommt, obwohl es in der Abbildung doch anders aussieht.



  Profil  Quote  Link auf diesen Beitrag Link
schnitzel
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 26.02.2009
Mitteilungen: 152
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, eingetragen 2019-09-22 11:52


Normalerweise sollte man immer seine Daten vorher normalisieren. (Sollte für Trees egal sein, nicht aber für Lineare Modelle). Ich schätze, dass das einen aussagekräftigeren score gibt.
Gruß



  Profil  Quote  Link auf diesen Beitrag Link
lissy1234567
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 01.09.2017
Mitteilungen: 402
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, vom Themenstarter, eingetragen 2019-09-22 12:55


Wie würde das funktionieren?



  Profil  Quote  Link auf diesen Beitrag Link
lissy1234567 hat die Antworten auf ihre/seine Frage gesehen.
lissy1234567 hat selbst das Ok-Häkchen gesetzt.
Neues Thema [Neues Thema]  Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2019 by Matroids Matheplanet
This web site was made with PHP-Nuke, a web portal system written in PHP. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]