scikit-learn中具有rbf内核的SVM使用递归功能消除的ValueError

戴维斯

我正在尝试在scikit-learn中使用递归功能消除(RFE)函数,但仍会收到错误消息ValueError: coef_ is only available when using a linear kernel我正在尝试使用rbf内核为支持向量分类器(SVC)执行功能选择。网站上的这个示例执行得很好:

print(__doc__)

from sklearn.svm import SVC
from sklearn.cross_validation import StratifiedKFold
from sklearn.feature_selection import RFECV
from sklearn.datasets import make_classification
from sklearn.metrics import zero_one_loss

# Build a classification task using 3 informative features
X, y = make_classification(n_samples=1000, n_features=25, n_informative=3,
                       n_redundant=2, n_repeated=0, n_classes=8,
                       n_clusters_per_class=1, random_state=0)

# Create the RFE object and compute a cross-validated score.
svc = SVC(kernel="linear")
rfecv = RFECV(estimator=svc, step=1, cv=StratifiedKFold(y, 2),
          scoring='accuracy')
rfecv.fit(X, y)

print("Optimal number of features : %d" % rfecv.n_features_)

# Plot number of features VS. cross-validation scores
import pylab as pl
pl.figure()
pl.xlabel("Number of features selected")
pl.ylabel("Cross validation score (nb of misclassifications)")
pl.plot(range(1, len(rfecv.grid_scores_) + 1), rfecv.grid_scores_)
pl.show()

但是,仅将内核类型从线性更改为rbf,如下所示,就会产生错误:

print(__doc__)

from sklearn.svm import SVC
from sklearn.cross_validation import StratifiedKFold
from sklearn.feature_selection import RFECV
from sklearn.datasets import make_classification
from sklearn.metrics import zero_one_loss

# Build a classification task using 3 informative features
X, y = make_classification(n_samples=1000, n_features=25, n_informative=3,
                       n_redundant=2, n_repeated=0, n_classes=8,
                       n_clusters_per_class=1, random_state=0)

# Create the RFE object and compute a cross-validated score.
svc = SVC(kernel="rbf")
rfecv = RFECV(estimator=svc, step=1, cv=StratifiedKFold(y, 2),
          scoring='accuracy')
rfecv.fit(X, y)

print("Optimal number of features : %d" % rfecv.n_features_)

# Plot number of features VS. cross-validation scores
import pylab as pl
pl.figure()
pl.xlabel("Number of features selected")
pl.ylabel("Cross validation score (nb of misclassifications)")
pl.plot(range(1, len(rfecv.grid_scores_) + 1), rfecv.grid_scores_)
pl.show()

看来这可能是一个错误,但是如果有人发现我做错了,那就太好了。另外,我正在运行带有scikit-learn版本0.14.1的python 2.7.6。

谢谢您的帮助!

YS-L

这似乎达到了预期的结果。RFECV要求估算器具有,coef_以表示功能的重要性:

估算器:对象

带有fit方法的监督学习估计量,该方法会更新保存拟合参数的coef_属性。重要功能必须与coef_数组中的高绝对值相对应。

根据文档,通过将内核更改为RBF,SVC不再是线性的,并且该coef_属性变得不可用:

coef_

数组,形状= [n_class-1,n_features]

权重分配给特征(原始问题的系数)。仅在线性核的情况下可用。

当内核不是线性的时,RFECV尝试访问,SVC (源)会引发该错误coef_

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

scikit-learn中具有rbf内核的SVM使用递归功能消除的ValueError

来自分类Dev

具有不同功能的不同内核-scikit-learn SVM

来自分类Dev

SVM,scikit-learn:带有RBF内核的决策值

来自分类Dev

scikit-learn管道中具有递归特征消除功能的网格搜索返回错误

来自分类Dev

SVM,scikit-learn:RBF内核的决策值

来自分类Dev

python scikit-learn中RBF内核的性能比SVM中的线性性能差得多

来自分类Dev

ValueError:设置具有序列的数组元素。在scikit-learn中使用SVM时

来自分类Dev

用户定义的带有scikit-learn的SVM内核

来自分类Dev

使用scikit-learn消除随机森林上的递归特征

来自分类Dev

使用scikit-learn消除随机森林上的递归特征

来自分类Dev

Python scikit svm“ ValueError:每个样本X具有62个功能;预期为337”

来自分类Dev

SciKit SGD回归器RBF内核逼近

来自分类Dev

删除scikit Learn中的特定功能

来自分类Dev

Scikit Learn中的交叉验证

来自分类Dev

Scikit Learn中的距离指标

来自分类Dev

在scikit-learn中对自定义内核SVM进行交叉验证

来自分类Dev

scikit中的RBM预测

来自分类Dev

使用scikit-learn进行递归特征消除和网格搜索

来自分类Dev

仅在scikit-learn中具有功能子集上的PCA的管道

来自分类Dev

如何使用scikit Learn确保测试集和训练集具有相同的功能?

来自分类Dev

Scikit学习SVM数字识别

来自分类Dev

在Scikit-Learn中使用非线性SVM时出错

来自分类Dev

.arff文件与scikit-learn?

来自分类Dev

Python scikit-learn-TypeError

来自分类Dev

scikit-learn StratifiedKFold实现

来自分类Dev

输出 Scikit Learn OLS 报告

来自分类Dev

scikit-learn:最近的邻居

来自分类Dev

Scikit-learn 导入约定

来自分类Dev

使用scikit-learn预测单个值会导致ValueError

Related 相关文章

热门标签

归档