当我使用管道对线性 svc 进行预处理、训练和测试时,如何获得最重要的特征系数?

Posted

技术标签:

【中文标题】当我使用管道对线性 svc 进行预处理、训练和测试时,如何获得最重要的特征系数?【英文标题】:How to get most important feature coefficients when i used pipeline to preprocess, train and test the linear svc? 【发布时间】:2020-11-21 15:17:06 【问题描述】:

我使用的是 LinearSVC,我使用列转换器对数字和分类数据进行了预处理,然后使用了管道。如您所见,我使用 GridSearchCV 来获取模型的最佳参数,然后将其放入管道中。 我也进行了拟合、测试并获得了分数,但我想知道最重要的特征系数。

到目前为止,我已经尝试过“clf.coef_”,因为分类器步骤在管道中被命名为 clf,但我收到一条消息说 clf 未定义。 我也试过 gridf.coef_,pipefinal.steps[1].coef_ 但没有任何效果。 因此,我们将不胜感激在这方面的任何帮助。谢谢。

preprocessing=ColumnTransformer([('hot',OneHotEncoder(),categ),('scale',StandardScaler(),num)],n_jobs=-1)
pipefinal=Pipeline([('pre',preprocessing),('clf',LinearSVC(max_iter=100000,C=0.1))])
gridf=GridSearchCV(pipefinal,param_grid=,cv=10)
gridf.fit(X_train,y_train)
gridf.score(X_val,y_val)

【问题讨论】:

【参考方案1】:

GridSearchCV 将在您调用fit() 方法后通过其best_estimator_ 属性提供最佳估算器。由于您的估算器是 Pipeline 对象,因此您必须进一步对其下标才能访问分类器。然后,您可以访问其coef_ 属性。在你的情况下,那将是:

gridf.best_estimator_['clf'].coef_

【讨论】:

以上是关于当我使用管道对线性 svc 进行预处理、训练和测试时,如何获得最重要的特征系数?的主要内容,如果未能解决你的问题,请参考以下文章

详解支持向量机-SVC真实数据案例:预测明天是否会下雨-填补缺失值和编码菜菜的sklearn课堂笔记

Python,sklearn:使用 MinMaxScaler 和 SVC 的管道操作顺序

SVC 分类器花费太多时间进行训练

linearRegression.score 和 svm.svc(kernel = linear) 产生的不同结果

Spark ML 错误:编号不正确。使用线性 SVC 时检测到的类

特定训练/测试拆分的线性回归系数“爆炸”