有可能知道哪几棵树对我有预测价值吗?我使用随机森林算法做了一个目标检测项目。
from sklearn.ensemble import RandomForestClassifier
RF_model = RandomForestClassifier(n_estimators = 50, random_state = 42)
# Train the model on training data
RF_model.fit(X_for_RF, y_train)在这里,我有50棵树,我需要知道有多少棵树给了我这个预测值。
假设随机抽取的森林对我来说,这是苹果,那么我需要得到它砍下的树的数目,苹果就像“有30棵树,告诉我这是苹果,其余的20棵决定它是香蕉”。
发布于 2020-12-13 16:25:17
是的,使用estimators_属性是可能的:
RF_model = RandomForestClassifier(n_estimators = 50, random_state = 42)
RF_model.fit(X_for_RF, y_train)
trees = RF_model.estimators_
# Get all 50 tree predictions for the first instance
preds_for_0 = [tree.predict(X_for_RF[0].reshape(1, -1))[0] for tree in trees]这里trees是来自sklearn.tree的n_estimators (这里是50) DecisionTreeClassifier()对象的列表。要从每个树中获取类标签,只需使用predict()方法即可。
列表preds_for_0 (长度50)存储每个组成树为X_for_RF[0]预测的标签。研究这个列表将很容易地给出大多数的标签,以及哪棵树给实例提供了什么标签。
https://stackoverflow.com/questions/65277512
复制相似问题