2017-03-14 2 views
3

Ich habe einen standard Randomforestclassifier auf dem Titanic-Datensatz implementiert, und hoffe, sklearn Decision_path-Methode zu erkunden, die in v0.18 eingeführt wurde. (http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html)Random Forest Classifier Entscheidungsweg Methode (Scikit)

Es gibt jedoch eine spärliche Matrix aus, von der ich nicht sicher bin, wie sie Sinn macht. Kann jemand beraten, wie man das am besten visualisiert?

#Training a simplified random forest 
estimator = RandomForestClassifier(random_state=0, n_estimators=3, max_depth=3) 
estimator.fit(X_train, y_train) 

#Extracting the decision path for instance i = 12 
i_data = X_test.iloc[12].values.reshape(1,-1) 
d_path = rf_best.decision_path(i_data) 

print(d_path) 

Output:

(< 1x3982 Sparse-Matrix vom Typ '' mit 598 gespeicherten Elementen in Compressed Sparse Row Format>, Array ([0, 45,
98, 149, 190 233, 258, 309, 360, 401, 430, 461, 512, 541, 580, 623, 668, 711, 760, 803, 852, 889, 932, 981, 1006, 1035, 1074, 1107, 1136 1165, 1196, 1241, 1262, 1313, 1350, 1385, 1420, 1465, 1518, 1553, 1590, 1625, 1672, 1707, 17 44, 1787, 1812, 1863, 1904, 1945, 1982, 2017, 2054, 2097, 2142, 2191, 2228, 2267, 2304, 2343, 2390, 2419, 2456, 2489, 2534, 2583, 2632, 2677, 2714, 2739, 2786, 2833, 2886, 2919, 2960, 2995, 3032, 3073, 3126, 3157, 3194, 3239, 3274, 3313, 3354, 3409, 3458, 3483, 3516, 3539, 3590, 3629, 3660, 3707, 3750, 3777, 3822, 3861, 3898, 3939, 3982], dtype = int32))

Entschuldigt, wenn ich nicht genug Detail bieten - lassen Sie mich anders kennen.

Danke!

Hinweis: Edited Random Forest (Grenztiefe und n_trees)

+0

Sie könnten mit einem beginnen sollen winziger Beispieldatensatz und verwenden Sie nur wenige Bäume in der Gesamtstruktur, um das Ergebnis zu vereinfachen. – BrenBarn

+0

Ich wäre daran interessiert, dies auch zu wissen. Aus der Dokumentation ist nicht klar, wie die Ausgabe zu interpretieren ist. Das einzige, was ich weiß, ist, dass Sklearn ein Tutorial zur Visualisierung der Entscheidungsoberfläche hat: http://scikit-learn.org/stable/auto_examples/ensemble/plot_forest_iris.html – robodasha

+0

@BrenBarn Ich habe die Anzahl der Bäume reduziert um das Ergebnis zu vereinfachen und nur eine einzige Dateninstanz zu verwenden. Hoffe das hilft. – jc023

Antwort

2

vereinfachen Wenn Sie die Bäume im Wald visualisieren möchten, dass Sie die Antwort hier zur Verfügung gestellten versuchen könnte: https://stats.stackexchange.com/q/118016

Anpassung an Ihre Problem: die

from sklearn import tree 

... 

i_tree = 0 
for tree_in_forest in estimator.estimators_: 
    with open('tree_' + str(i_tree) + '.dot', 'w') as my_file: 
     my_file = tree.export_graphviz(tree_in_forest, out_file = my_file) 
    i_tree = i_tree + 1 

schaffen wird 10 (Standard Anzahl der Bäume im Wald) Dateien genannt tree_i.dot für i = 0 bis 9. Sie können pDF-Dateien für jeden von th erstellen em am Terminal zu tun (zum Beispiel):

$ dot -Tpdf tree_0.dot -o tree.pdf 

Wahrscheinlich gibt es eine intelligentere Art und Weise, es zu tun, ich würde glücklich sein, es zu lernen, wenn jemand helfen könnte :)

+1

Danke Luciana. Obwohl dies zweifellos nützlich ist, sind wir immer noch mit dem Problem konfrontiert, den Entscheidungsweg des gesamten Waldes (im Gegensatz zu einzelnen Bäumen) zu visualisieren. – jc023

+0

@ jc023.Ich habe denselben Zweifel.Haben Sie die Lösung gefunden? Können Sie mir bei der Interpretation der Ergebnisse helfen? – Jayashree

+0

@Jayashree gibt es die [TreeInterpreter] (https: // github.com/andosa/treeinterpreter) Paket, das auch mit Wäldern funktioniert. – ldavid

Verwandte Themen