Используя scores = cross_val_score(clf, X_train, y, cv=cv)
, вы можете получить только перекрестно подтвержденные оценки модели. cross_val_score
будет внутренне разделять данные на обучение и тестирование на основе параметра cv
.
Таким образом, значения, которые вы получаете, являются перекрестно проверенной точностью SV C.
* 1007. * Чтобы получить оценку по невидимым данным, вы можете сначала подобрать модель, например,
clf = make_pipeline(preprocessing.StandardScaler(with_mean=False), svm.SVC(C=1))
clf.fit(X_train, y) # the model is trained now
, а затем выполнить clf.score(X_unseen,y)
Последняя вернет точность модели на невидимой data.
EDIT: лучший способ сделать то, что вы хотите, это использовать GridSearch, чтобы сначала найти лучшую модель, используя данные обучения, а затем оценить лучшую модель, используя невидимые (тестовые) данные. :
from sklearn import svm, datasets
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
# load some data
iris = datasets.load_iris()
X, y = iris.data, iris.target
#split data to training and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
# hyperparameter tunig of the SVC model
parameters = {'kernel':('linear', 'rbf'), 'C':[1, 10]}
svc = svm.SVC()
# fit the GridSearch using the TRAINING data
grid_searcher = GridSearchCV(svc, parameters)
grid_searcher.fit(X_train, y_train)
#recover the best estimator (best parameters for the SVC, based on the GridSearch)
best_SVC_model = grid_searcher.best_estimator_
# Now, check how this best model behaves on the test set
cv_scores_on_unseen = cross_val_score(best_SVC_model, X_test, y_test, cv=5)
print(cv_scores_on_unseen.mean())