AttributeError:“ CalibratedClassifierCV”对象没有属性“ coef_”

时间:2019-12-05 11:33:05

标签: python scikit-learn feature-selection

我正在使用SVM分类器sklearn的{​​{1}}线性实现。

我没有直接使用它,而是用LinearSVM包装它以获得预测时间内的概率,例如:

CalibratedClassifierCV

在拟合模型之后,我试图按照本文Visualising Top Features in Linear SVM with Scikit Learn and Matplotlib的说明来获取model = CalibratedClassifierCV(LinearSVC(random_state=0)) 来打印Top功能,但是我得到了这个错误:

coef_

在用校准器包装分类器的情况下,如何获得coef = classifier.coef_.ravel() AttributeError: 'CalibratedClassifierCV' object has no attribute 'coef_' ?我对这种方式并不完全感兴趣,因此,如果有另一种方法来获得特征的重要性,它将是欢迎。

1 个答案:

答案 0 :(得分:1)

coef_不是CalibratedClassifierCV的属性,但是,它是base_estimator的属性,在您的情况下,该属性是LinearSVC。您可以通过calibrated_classifiers_访问基本估计量,cv是拟合模型的列表(取决于您根据from sklearn import svm, datasets from sklearn.model_selection import GridSearchCV from sklearn.calibration import CalibratedClassifierCV from sklearn.svm import LinearSVC iris = datasets.load_iris() model = CalibratedClassifierCV(LinearSVC(random_state=0)) model.fit(iris.data, iris.target) model.calibrated_classifiers_ [<sklearn.calibration._CalibratedClassifier at 0x7f15d0c57550>, <sklearn.calibration._CalibratedClassifier at 0x7f15d0c57c18>, <sklearn.calibration._CalibratedClassifier at 0x7f15d0aec080>] 值拟合的模型数量)。我已经显示了示例代码,您可以根据需要参考。

cv

在这种情况下,我的coef_avg = 0 for i in model.calibrated_classifiers_: coef_avg = coef_avg + i.base_estimator.coef_ coef_avg = coef_avg/len(model.calibrated_classifiers_) array([[ 0.16464871, 0.45680981, -0.77801375, -0.4170196 ], [ 0.1238834 , -0.89117967, 0.35451826, -0.89231957], [-0.83826029, -0.9237139 , 1.30772955, 1.67592916]]) 是3,因此我建立了3个模型,因此我将简单地遍历它们并取平均值。

    Private Async Sub DownloadExcelReport_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles DownloadExcelReport.Click

        DownloadInProgress.Visible = True

        Await Task.Run(Sub()
                           ProcessExcelReport() 'long running sub (not an async function).
                       End Sub)

    End Sub

希望这会有所帮助!