【发布时间】:2017-12-19 11:21:21
【问题描述】:
我有这个代码:
models=[]
#models.append(('LDA', LinearDiscriminantAnalysis()))
#models.append(('KNN', KNeighborsClassifier()))
#models.append(('CART', DecisionTreeClassifier()))
#models.append(('NB', GaussianNB()))
models.append(('SVM-linear', SVC(kernel='linear')))
models.append(('SVM-rbf', SVC(kernel='rbf')))
#models.append(('SGD', linear_model.SGDClassifier()))
# evaluate each model in turn
seed=numRow-1
results = []
names = []
scoring = 'accuracy'
for name, model in models:
kfold = model_selection.KFold(n_splits=3, random_state=seed)
cv_results = model_selection.cross_val_score(model, features, labels, cv=kfold, scoring=scoring)
results.append(cv_results)
names.append(name)
msg = "%s: %f (%f)" % (name, cv_results.mean(), cv_results.std())
print(msg)
我的问题是:我有 4 个数据集,trainingFeatures、trainingLabels、testFeatures 和 testLabels。如何使用训练集教授我的模型并使用 testFeatures 对其进行测试,然后创建一个 predictLabels 以将其与 testLabels 进行比较。在我的代码中,“功能”是 trainingFeatures+testFeatures,“标签”是 trainingLabels+testLabels。
【问题讨论】:
-
那么不要使用
cross_val_score。只需调用model.fit(trainingFeatures, trainingLabels)进行训练并在 for 循环中使用model.score(testFeatures, testLabels)计算测试数据的准确度。 -
感谢您的回答,但这会影响准确性吗?使用 crow_val_score 会更好吗?
-
当然会。但是比较它们是没有意义的。
cross_val_score会将数据拆分为 KFold 中给出的不同折叠,并计算每个折叠的精度并返回所有精度的数组。在您的问题中,您询问了如何在一个数据集上进行训练并在另一组数据集上进行测试。我就是这么回答的。