我有这段代码:
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。
答案 0 :(得分:-1)
您使用代码和交叉评分的方式是正确的。
由于您的特征变量包含训练和测试数据,因此交叉评分将根据您定义的KFold将数据拆分为训练和测试。
然后它将使用测试标签来产生每个折叠的准确性。
所以使用
cv_results.mean()
你得到所有折叠的平均准确度。
另一种方法是手动定义训练和测试功能和标签,并使用拟合和预测。