为什么K-Cross验证需要先适合?

时间:2017-01-18 08:07:46

标签: python scikit-learn cross-validation

我在以下代码中收到错误,除非我适合SVC:

  

此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)

2 个答案:

答案 0 :(得分:1)

你没有。你的cross_val_score在没有合适的情况下运行良好。

在跑分之前你需要适合。

答案 1 :(得分:1)

您看到该错误的原因是因为您要求您的估算工具(clf)在实际知道如何<之前计算其分类的准确性(使用clf.score方法) / em>进行分类。要教clf如何进行分类,您必须通过调用fit方法来训练它。这是错误消息试图告诉您的内容。

上述意义上的

score与交叉验证无关,只与准确性无关。您使用的cross_val_score辅助方法可以使用未经过培训的估算工具,并为您的数据计算交叉验证的分数。这个助手为你训练估算器,这就是为什么你不必在使用这个助手之前打电话给fit

有关详细信息,请参阅documentation for cross-validation