我正在使用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)
这里,我收到一个错误提示说
the model is not fitted using fit()
但通常在cross_val_score
函数中,模型是拟合的吗?问题出在哪里?
X_train
、y_train
训练模型,然后在X_test
、y_test
上评估其性能。在未经过训练的情况下评估分类器的性能是没有意义的。 - ali_m