Der Entscheidungsbaum und die wichtigen Funktionen können leicht abgerufen werden, wenn DecisionTreeClassifier in scikit learn verwendet wird. Ich bin jedoch nicht in der Lage, keine von ihnen zu erhalten, wenn ich und Absackfunktion, z. B. BaggingClassifier.Druckentscheidungsbaum und feature_importance bei Verwendung von BaggingClassifier
Da wir das Modell mit dem BaggingClassifier anpassen müssen, kann ich die Ergebnisse (drucke die Bäume (Graphen), feature_importances_, ...), die sich auf den DecisionTreeClassifier beziehen, nicht zurückgeben.
Hier ist mein Skript:
seed = 7
n_iterations = 199
DTC = DecisionTreeClassifier(random_state=seed,
max_depth=None,
min_impurity_split= 0.2,
min_samples_leaf=6,
max_features=None, #If None, then max_features=n_features.
max_leaf_nodes=20,
criterion='gini',
splitter='best',
)
#parametersDTC = {'max_depth':range(3,10), 'max_leaf_nodes':range(10, 30)}
parameters = {'max_features':range(1,200)}
dt = RandomizedSearchCV(BaggingClassifier(base_estimator=DTC,
#max_samples=1,
n_estimators=100,
#max_features=1,
bootstrap = False,
bootstrap_features = True, random_state=seed),
parameters, n_iter=n_iterations, n_jobs=14, cv=kfold,
error_score='raise', random_state=seed, refit=True) #min_samples_leaf=10
# Fit the model
fit_dt= dt.fit(X_train, Y_train)
print(dir(fit_dt))
tree_model = dt.best_estimator_
# Print the important features (NOT WORKING)
features = tree_model.feature_importances_
print(features)
rank = np.argsort(features)[::-1]
print(rank[:12])
print(sorted(list(zip(features))))
# Importing the image (NOT WORKING)
from sklearn.externals.six import StringIO
tree.export_graphviz(dt.best_estimator_, out_file='tree.dot') # necessary to plot the graph
dot_data = StringIO() # need to understand but it probably relates to read of strings
tree.export_graphviz(dt.best_estimator_, out_file=dot_data, filled=True, class_names= target_names, rounded=True, special_characters=True)
graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
img = Image(graph.create_png())
print(dir(img)) # with dir we can check what are the possibilities in graph.create_png
with open("my_tree.png", "wb") as png:
png.write(img.data)
I erhalten erros wie: 'BaggingClassifier' Objekt hat kein Attribut 'TREE_' und 'BaggingClassifier' Objekt hat kein Attribut 'feature_importances'. Weiß jemand wie ich sie bekommen kann? Vielen Dank.
Mögliche Duplikate von [Feature importances - Bagging, scikit-lernen] (https://stackoverflow.com/questions/44333573/feature-importances-bagging-scik-learn) –
@MikhailKorobov das ist kein Duplikat der Frage in der Verbindung. Die Frage in dem Link diskutiert nur das Attribut feature_importance, während das OP daran interessiert ist, auch auf die Bäume selbst zuzugreifen. –