Ich möchte verstehen, wie max_samples Wert für einen Bagging-Klassifikator die Anzahl der Proben für jeden der Basisschätzer verwendet.Wie wirkt sich das Schlüsselwort "max_samples" für einen Bagging-Klassifikator auf die Anzahl der Stichproben aus, die für jeden der Basisschätzer verwendet werden?
Dies ist die Gridsearch Ausgabe:
GridSearchCV(cv=5, error_score='raise',
estimator=BaggingClassifier(base_estimator=DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None,
max_features=None, max_leaf_nodes=None, min_samples_leaf=1,
min_samples_split=2, min_weight_fraction_leaf=0.0,
presort=False, random_state=1, spl... n_estimators=100, n_jobs=-1, oob_score=False,
random_state=1, verbose=2, warm_start=False),
fit_params={}, iid=True, n_jobs=-1,
param_grid={'max_features': [0.6, 0.8, 1.0], 'max_samples': [0.6, 0.8, 1.0]},
pre_dispatch='2*n_jobs', refit=True, scoring=None, verbose=2)
Hier finden bin ich heraus, was die besten params waren:
print gs5.best_score_, gs5.best_params_
0.828282828283 {'max_features': 0.6, 'max_samples': 1.0}
nun die beste Rastersuche Schätzer und ich bin Kommissionierung versuchen, das zu sehen Anzahl der Proben, die der spezifische Bagging-Klassifikator in seinem Satz von 100 Basis-Entscheidungsbaum-Schätzern verwendet hat. Jetzt
val=[]
for i in np.arange(100):
x = np.bincount(gs5.best_estimator_.estimators_samples_[i])[1]
val.append(x)
print np.max(val)
print np.mean(val), np.std(val)
587
563.92 10.3399032877
, ist die Größe des Trainingssatzes 891. Da CV 5, 891 * 0,8 = 712,8 in jede Absackung Klassifikator Auswertung gehen sollte, und da max_samples 1,0, 891 * 0,5 * 1,0 = 712,8 sollte die Anzahl der Proben pro Basisschätzer, oder etwas in der Nähe davon?
Also, warum ist die Zahl im Bereich 564 +/- 10, und der maximale Wert 587, wenn nach Berechnung, sollte es nahe 712 sein? Vielen Dank.
Der Grund, warum ich ein wenig verwirrt bin, ist, weil ich erwarte, dass die Schlüsselwörter max_features und max_samples ähnlich funktionieren. Wenn ich estimators_features_ verwende, um zu sehen, welche Features zum Trainieren der 100 Basis-Entscheidungsbaum-Schätzer verwendet wurden, sehe ich, dass alle 100 Bäume jeweils eine Untermenge von 9 Merkmalen verwendeten und mein Datensatz 16 Merkmale und 0,6 * 16 = 9,6 hatte macht Sinn, 9 Features als Maximalwert zu haben. Aber es gibt keinen Baum mit weniger als 9 Funktionen, alle haben 9. Jetzt im Fall von Proben, sollten beide alle eine zufällige Teilmenge von 712 Proben verwenden, oder ich erwartete, dass die Zahl näher an 712 sein würde. – hkhare
Das Problem ist, dass Samples standardmäßig mit Ersetzung gezeichnet werden. – bpachev
OK.Ich habe mehr Nachforschungen angestellt, und es stellt sich heraus, dass GridSearchCV einen Schätzer zurückgibt, der auf den vollen Datensatz von 891 Punkten trainiert wurde. Wenn Sie Sampling mit Ersatz durchführen, erhalten Sie auch einige Duplikate. Siehe meine neu geschriebene Antwort für die Details. – bpachev