交叉验证和模型选择
Cross validation and model selection
我正在使用 sklearn
进行 SVM 训练。我正在使用交叉验证来评估估计器并避免过度拟合模型。
我把数据分成两部分。训练数据和测试数据。这是代码:
import numpy as np
from sklearn import cross_validation
from sklearn import datasets
from sklearn import svm
X_train, X_test, y_train, y_test = cross_validation.train_test_split(
iris.data, iris.target, test_size=0.4, random_state=0
)
clf = svm.SVC(kernel='linear', C=1)
scores = cross_validation.cross_val_score(clf, X_train, y_train, cv=5)
print scores
现在我需要在 X_test 上评估估计器 clf。
clf.score(X_test, y_test)
这里,我收到一条错误消息,指出 模型未使用 fit() 拟合,但通常情况下,在 cross_val_score
函数中模型已拟合?有什么问题?
cross_val_score
is basically a convenience wrapper for the sklearn cross-validation iterators. You give it a classifier and your whole (training + validation) dataset and it automatically performs one or more rounds of cross-validation by splitting your data into random training/validation sets, fitting the training set, and computing the score on the validation set. See the documentation here 示例和更多解释。
clf.score(X_test, y_test)
引发异常的原因是因为 cross_val_score
在估计器的 copy 上执行拟合而不是原始的(参见使用源代码 clone(estimator)
中的 here)。因此,clf
在函数调用之外保持不变,因此在您调用 clf.fit
.
时未正确初始化
我正在使用 sklearn
进行 SVM 训练。我正在使用交叉验证来评估估计器并避免过度拟合模型。
我把数据分成两部分。训练数据和测试数据。这是代码:
import numpy as np
from sklearn import cross_validation
from sklearn import datasets
from sklearn import svm
X_train, X_test, y_train, y_test = cross_validation.train_test_split(
iris.data, iris.target, test_size=0.4, random_state=0
)
clf = svm.SVC(kernel='linear', C=1)
scores = cross_validation.cross_val_score(clf, X_train, y_train, cv=5)
print scores
现在我需要在 X_test 上评估估计器 clf。
clf.score(X_test, y_test)
这里,我收到一条错误消息,指出 模型未使用 fit() 拟合,但通常情况下,在 cross_val_score
函数中模型已拟合?有什么问题?
cross_val_score
is basically a convenience wrapper for the sklearn cross-validation iterators. You give it a classifier and your whole (training + validation) dataset and it automatically performs one or more rounds of cross-validation by splitting your data into random training/validation sets, fitting the training set, and computing the score on the validation set. See the documentation here 示例和更多解释。
clf.score(X_test, y_test)
引发异常的原因是因为 cross_val_score
在估计器的 copy 上执行拟合而不是原始的(参见使用源代码 clone(estimator)
中的 here)。因此,clf
在函数调用之外保持不变,因此在您调用 clf.fit
.