【发布时间】:2016-05-26 12:12:57
【问题描述】:
我正在使用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 函数中拟合模型?有什么问题?
【问题讨论】:
-
在进行交叉验证时,您将在
X_train、y_train上训练模型,然后在X_test、y_test上评估其性能。如果不先训练分类器,就评估它的性能是没有意义的。 -
@ali_m,cross_validation.cross_val_score() 有什么作用?通常它首先训练模式。我很清楚你在说什么。就我而言,我需要一种提前停止以避免过度拟合。我将数据集分成 3 个部分,例如训练、有效和测试。我在火车部分训练模型,然后在有效部分进行调整。一旦我获得了合理的训练和有效的错误。我在测试部分测试它。就是这样!
标签: python numpy machine-learning scikit-learn cross-validation