我已转介这两个职位:
请不要把这个标记为副本。
我试图从打包分类器中获取特征名(它没有内置的特性重要性)。
我有下面的示例数据和代码,这些数据和代码是基于上述链接的相关职位的。
import numpy as np
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
X, y = load_iris(return_X_y=True)
clf = BaggingClassifier(DecisionTreeClassifier())
clf.fit(X, y)
feature_importances = np.mean([tree.feature_importances_ for tree in clf.estimators_], axis=0)但是这只输出了特性的重要性(如下所示),但是我也想要特性名。
feature_importances
# array([0.15098599, 0.27608213, 0.33606019, 0.23687169])如何为这些特性重要性值找到相应的特征名称?
发布于 2022-03-19 12:08:48
您可以在没有任何参数的情况下调用load_iris函数,这样函数的返回将是一个具有某些属性的Bunch对象(类似字典的对象)。对于您的用例来说,最相关的是bunch.data (功能矩阵)、bunch.target和bunch.feature_names。
...
bunch = load_iris()
X = bunch.data
y = bunch.target
feature_names = bunch.feature_names
clf = BaggingClassifier(DecisionTreeClassifier(), random_state=42)
clf.fit(X, y)
feature_importances = np.mean([tree.feature_importances_ for tree in clf.estimators_], axis=0)
output = {fn:fi for fn,fi in zip(feature_names,feature_importances)}
print(output){
'sepal length (cm)': 0.008652347823679744,
'sepal width (cm)': 0.01945400672681583,
'petal length (cm)': 0.539297348817521,
'petal width (cm)': 0.43259629663198346
}https://stackoverflow.com/questions/71493530
复制相似问题