如何从model_selection.cross_val_score获取预测标签

时间:2017-07-14 11:13:24

标签: 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='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进行比较。在我的代码中,“features”是trainingFeatures + testFeatures,“labels”是trainingLabels + testLabels。

1 个答案:

答案 0 :(得分:-1)

您使用代码和交叉评分的方式是正确的。

由于您的特征变量包含训练和测试数据,因此交叉评分将根据您定义的KFold将数据拆分为训练和测试。

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

所以使用

cv_results.mean() 

你得到所有折叠的平均准确度。

另一种方法是手动定义训练和测试功能和标签,并使用拟合和预测。