2017-01-18 52 views
0

我得到了下面的代码中的错误,除非我做一个合适的SVC:为什么K-Cross验证需要先适合?

这SVC实例未安装呢。在使用此方法之前,请使用适当的 参数调用'fit'。

除非我这样做:

clf = svm.SVC(kernel='linear', C=1).fit(X_train, y_train) 

为什么我需要做一个交叉验证之前做一个合适的?

import numpy as np 
from sklearn import cross_validation 
from sklearn import datasets 
from sklearn import svm 

iris = datasets.load_iris() 

# Split the iris data into train/test data sets with 40% reserved for testing 
X_train, X_test, y_train, y_test = cross_validation.train_test_split(iris.data, iris.target, 
                    test_size=0.4, random_state=0) 

# Build an SVC model for predicting iris classifications using training data 
clf = svm.SVC(kernel='linear', C=1).fit(X_train, y_train) 

# Now measure its performance with the test data 
clf.score(X_test, y_test) 

# We give cross_val_score a model, the entire data set and its "real" values, and the number of folds: 
scores = cross_validation.cross_val_score(clf, iris.data, iris.target, cv=5) 

回答

0

你不知道。你的cross_val_score运行良好,没有合适的。

您在运行得分之前确实需要适应。

0

你看到这个错误的原因是因为你是问你的估计(clf)来计算其分类的准确度(与clf.score法),它实际上知道如何做分级前。要教授clf如何执行分类,您需要通过调用fit方法来进行分类。这是错误信息试图告诉你的。

score在上述意义上与交叉验证无关,只有准确性。您使用的cross_val_score辅助方法可以使用未受过训练的估算器,并为您的数据计算交叉验证分数。这名助手会为你估算估算量,这就是为什么你在使用这个助手之前不必拨打fit

查看documentation for cross-validation了解更多信息。

相关问题