为什么 K-Cross 验证需要首先拟合



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

此 SVC 实例尚未安装。用适当的方式称呼"适合" 使用此方法之前的参数。

除非我这样做:

 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)

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

在跑步得分之前,您确实需要适应。

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

上述意义上的score与交叉验证无关,仅与准确性有关。您使用的cross_val_score帮助程序方法可以采用未经训练的估算器,并计算数据的交叉验证分数。此帮助程序会为您训练估算器,这就是为什么您在使用此帮助程序之前不必调用fit的原因。

有关详细信息,请参阅交叉验证的文档。

相关内容

  • 没有找到相关文章

最新更新