使用不平衡学习库的特征重要性

2024-01-24

The imblearn http://contrib.scikit-learn.org/imbalanced-learn/stable/generated/imblearn.ensemble.BalancedBaggingClassifier.html库是用于不平衡分类的库。它允许您使用scikit-learn估计器,同时使用各种方法平衡类,从欠采样到过采样再到集成。

然而我的问题是,使用后如何获得估计器的特征重要性BalancedBaggingClassifier或者 imblearn 的任何其他采样方法?

from collections import Counter
from sklearn.datasets import make_classification
from sklearn.cross_validation import train_test_split
from sklearn.metrics import confusion_matrix
from imblearn.ensemble import BalancedBaggingClassifier 
from sklearn.tree import DecisionTreeClassifier
X, y = make_classification(n_classes=2, class_sep=2,weights=[0.1, 0.9], n_informative=3, n_redundant=1, flip_y=0, n_features=20, n_clusters_per_class=1, n_samples=1000, random_state=10)
print('Original dataset shape {}'.format(Counter(y)))
X_train, X_test, y_train, y_test = train_test_split(X, y,random_state=0)
bbc = BalancedBaggingClassifier(random_state=42,base_estimator=DecisionTreeClassifier(criterion=criteria_,max_features='sqrt',random_state=1),n_estimators=2000)
bbc.fit(X_train,y_train) 

并非所有的估计量sklearn允许您获得特征重要性(例如,BaggingClassifier没有)。如果估计器这样做,看起来应该只存储为estimator.feature_importances_,自从imblearn封装子类来自sklearn类。不知道什么是估算器imblearn已经实现了,不知道有没有any提供feature_importances_,但一般来说你应该看看sklearn 文档 http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.BaggingClassifier.html#sklearn.ensemble.BaggingClassifier查找对应的对象,看看是否有。

在这种情况下,您可以查看每个估算器的特征重要性BalancedBaggingClassifier, 像这样:

for estimator in bbc.estimators_:
    print(estimator.steps[1][1].feature_importances_)

您可以打印估计器的平均重要性,如下所示:

print(np.mean([est.steps[1][1].feature_importances_ for est in bbc.estimators_], axis=0))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用不平衡学习库的特征重要性 的相关文章

随机推荐