当我使用管道对线性 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 的管道操作顺序
linearRegression.score 和 svm.svc(kernel = linear) 产生的不同结果