cross-Validierung + decision trees in sklearn
Versuch, erstellen Sie einen Entscheidungsbaum mit cross-Validierung mit sklearn und panads.
Meine Frage ist in dem code unten, wird die Kreuzvalidierung teilt die Daten, die ich dann verwenden für training und Prüfung. Ich werde versuchen zu finden, die am besten die Tiefe des Baumes durch neu es n-mal mit unterschiedlichen maximale Tiefe festgelegt. In der cross-Validierung sollte ich stattdessen verwenden k Falten Lebenslauf und wenn ja, wie würde ich das im code habe ich?
import numpy as np
import pandas as pd
from sklearn import tree
from sklearn import cross_validation
features = ["fLength", "fWidth", "fSize", "fConc", "fConc1", "fAsym", "fM3Long", "fM3Trans", "fAlpha", "fDist", "class"]
df = pd.read_csv('magic04.data',header=None,names=features)
df['class'] = df['class'].map({'g':0,'h':1})
x = df[features[:-1]]
y = df['class']
x_train,x_test,y_train,y_test = cross_validation.train_test_split(x,y,test_size=0.4,random_state=0)
depth = []
for i in range(3,20):
clf = tree.DecisionTreeClassifier(max_depth=i)
clf = clf.fit(x_train,y_train)
depth.append((i,clf.score(x_test,y_test)))
print depth
hier ist ein link zu den Daten, die ich benutze in Fall, dass hilft niemanden. https://archive.ics.uci.edu/ml/datasets/MAGIC+Gamma+Teleskop
InformationsquelleAutor razeal113 | 2016-01-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ihrem code, den Sie erstellen eine statische training-test-split. Wenn Sie möchten, wählen Sie die beste Tiefe durch cross-Validierung, die Sie verwenden können
sklearn.cross_validation.cross_val_score
innerhalb der for-Schleife.Lesen Sie sklearn Dokumentation für weitere Informationen.
Hier ist ein update der code mit Lebenslauf:
Alternativ können Sie
sklearn.grid_search.GridSearchCV
und nicht schreiben die for-Schleife selbst, vor allem wenn Sie wollen zu optimieren für mehr als ein hyper-parameter.Edit: verändert, wie GridSearchCV importiert wird, um Platz für learn2day Kommentar.
Gut zu hören, dass. Können Sie die Antwort akzeptieren?
+1 für die Beantwortung der Frage und auch darauf hindeutet raster Suche, das ist definitiv die bessere Praxis für diese Art von problem
grid_search
ist veraltet, da 0.18, und entfernt, da 0.20. Sollten Sie nun verwendenGridSearchCV
aussklearn.model_selection
Wenn Sie wählen, um cross-Validierung zu optimieren, das Modell der hyper-Parameter, dann ist es besser zu tun, eine Zug - /test-split-ersten -, Zug-und tun cross-Validierung auf der trainingsmenge und testen, am Ende auf dem ersten test legen Sie Sie erstellt haben.
sklearn.model_selection.train_test_split
ist nützlich für die Zug-test-splitInformationsquelleAutor Dimosthenis