【发布时间】:2016-01-29 04:08:15
【问题描述】:
我想用scikit的SVC classifier和cross-vlidation的不同参数,所以我尝试了以下:
那么,让我们使用SVC算法:
from sklearn import svm
print('Support vector machine(SVM): {:.2f}'.format(metrics.accuracy_score(
y, stratified_cv(X, y, svm.SVC(kernel='linear')))))
但似乎我无法访问该对象:
AttributeError Traceback (most recent call last)
<ipython-input-16-dacd8d429376> in <module>()
5
6 print('Support vector machine(SVM): {:.2f}'.format(metrics.accuracy_score(
----> 7 y, stratified_cv(X, y, svm.SVC(kernel='linear')))))
8
AttributeError: 'SVC' object has no attribute 'SVC'
有趣的是,当我尝试这个时:
print('Support vector machine(SVM): {:.2f}'.format(metrics.accuracy_score(
y, stratified_cv(X, y, svm.SVC))))
我明白了:
Support vector machine(SVM): 0.46
会发生什么?...对于上述交叉验证策略的任何想法,如何设置我自己的 SVM 配置?提前谢谢各位!
【问题讨论】:
-
您是否创建了一个名为
svm的对象来隐藏svm模块? -
那么请展示一个独立的例子来说明问题。您发布的代码中未定义变量
svm。 -
在出现错误的情况下,您将
stratified_cv传递给SVC的输出。在您没有收到错误的情况下,您将传递stratified_cv函数SVC本身。这是两个非常不同的事情。您的函数使用一种输入而不是另一种输入,这并不奇怪。多想想你在这里有什么。 -
另外,看看你在引发错误的行上做了多少。为了隔离错误的原因,您需要在不同的行上进行不同的操作。
-
就目前而言,这个问题应该关闭,因为它有很多复杂的BS,分散了核心问题,这是对函数对象和返回值之间的区别的简单混淆的那个功能。我想说你应该清理掉这里所有无关的
scikit东西,只保留你真正问题的精髓,即“svm.SVC和svm.SVC(...)之间有什么区别?”
标签: python python-2.7 object python-3.x machine-learning