- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在 scikit learn 中使用 DecisionTreeClassifier 时,可以轻松获得决策树和重要特征。但是,如果我和装袋功能(例如 BaggingClassifier),我将无法获得它们中的任何一个。
由于我们需要使用 BaggingClassifier 来拟合模型,因此我无法返回与 DecisionTreeClassifier 相关的结果(打印树(图)、feature_importances_、...)。
这是我的脚本:
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)
我得到如下错误:“BaggingClassifier”对象没有属性“tree_”,“BaggingClassifier”对象没有属性“feature_importances”。有谁知道我怎样才能得到它们?谢谢。
最佳答案
基于 the documentation ,BaggingClassifier 对象确实没有属性“feature_importances”。你仍然可以按照这个问题的答案中的描述自己计算它:Feature importances - Bagging, scikit-learn
您可以使用属性 estimators_
访问在 BaggingClassifier 拟合期间生成的树,如以下示例所示:
from sklearn import svm, datasets
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import BaggingClassifier
iris = datasets.load_iris()
clf = BaggingClassifier(n_estimators=3)
clf.fit(iris.data, iris.target)
clf.estimators_
clf.estimators_
是 3 个拟合决策树的列表:
[DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None,
max_features=None, max_leaf_nodes=None,
min_impurity_split=1e-07, min_samples_leaf=1,
min_samples_split=2, min_weight_fraction_leaf=0.0,
presort=False, random_state=1422640898, splitter='best'),
DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None,
max_features=None, max_leaf_nodes=None,
min_impurity_split=1e-07, min_samples_leaf=1,
min_samples_split=2, min_weight_fraction_leaf=0.0,
presort=False, random_state=1968165419, splitter='best'),
DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None,
max_features=None, max_leaf_nodes=None,
min_impurity_split=1e-07, min_samples_leaf=1,
min_samples_split=2, min_weight_fraction_leaf=0.0,
presort=False, random_state=2103976874, splitter='best')]
因此您可以遍历列表并访问每一棵树。
关于python - 使用 BaggingClassifier 时打印决策树和 feature_importance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45309655/
我正在使用 Python 的 sklearn 随机森林 (ensemble.RandomForestClassifier) 进行分类,并使用 feature_importances_ 为分类器寻找重要
在 scikit learn 中使用 DecisionTreeClassifier 时,可以轻松获得决策树和重要特征。但是,如果我和装袋功能(例如 BaggingClassifier),我将无法获得它
我有一个以时间序列作为数据输入的分类任务,其中每个属性 (n=23) 代表一个特定的时间点。除了绝对分类结果之外,我还想知道哪些属性/日期对结果的贡献有多大。因此,我只使用 feature_impor
我正在运行 SciKit Learn 的决策树算法,我想获取 Feature_importance 向量以及特征名称,以便我可以确定哪些特征在标记过程中占主导地位。你可以帮帮我吗?谢谢。 最佳答案 假
1.环境信息 操作系统:WindowsPython版本:Python 2.7.13 2.错误信息: ValueError:无法解码 JSON 对象 lgb_train = lgb.Dataset(X_
我正在使用 eli5 explain_weights scikit-learn 的随机森林分类器上的函数。我在eli5见过documentation (第 30-31 页)该函数能够返回每个类别的特征
我正在尝试在 KNeighborsClassifier 上应用 RFECV 来消除无关紧要的特征。为了使问题可重复,以下是虹膜数据的示例: from sklearn.datasets import l
我是一名优秀的程序员,十分优秀!