Python 2.7 如何从model_selection.cross_val_分数中获取预测标签

Python 2.7 如何从model_selection.cross_val_分数中获取预测标签,python-2.7,scikit-learn,Python 2.7,Scikit Learn,我有以下代码: models=[] #models.append(('LDA', LinearDiscriminantAnalysis())) #models.append(('KNN', KNeighborsClassifier())) #models.append(('CART', DecisionTreeClassifier())) #models.append(('NB', GaussianNB())) models.append(('SVM-linear', SVC(kernel='

我有以下代码:

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测试模型,然后创建predictedLabels将其与testLabels进行比较。在我的代码中,“功能”是trainingFeatures+testFeatures,“标签”是trainingLabels+testLabels。

使用代码和交叉val分数的方式是正确的

由于features变量包含训练和测试数据,因此cross val分数将根据您定义的KFold将数据拆分为训练和测试

然后,它将使用测试标签,以产生每个折叠的准确性

所以通过使用

cv_results.mean() 
你可以得到所有褶皱的平均精度


另一种方法是手动定义培训和测试功能和标签,并使用fit和predict。

然后不要使用
cross\u val\u score
。只需调用
model.fit(trainingFeatures,trainingLabels)
进行培训,并使用for循环内的
model.score(testFeatures,testLabels)
计算测试数据的准确性。感谢您的回答,但这会影响准确性吗?也许用crow_val_分数会更好吗?当然会。但是比较它们是没有意义的
cross_val_score
将数据拆分为KFold中给出的不同折叠,计算每个折叠的精度,并返回所有精度的数组。在您的问题中,您询问了如何在一个数据集上进行训练,并在另一个数据集上进行测试。这就是我的回答。