我对数据集进行了SVM交叉验证。数据的行数为550。在特征选择部分中,从860个特征中选择了200个特征。 (我通过一些优化方法选择了功能)运行交叉验证后,我获得了所有得分指标1。
我已经测试了所有cross_validation,cross_val_score,cross_val_预测。我还使用StratifiedKFold拆分了数据,并为10个拆分手动创建了模型。我使用混淆矩阵,并且每个拆分的所有FP和FN中的数据数量为零。
clf = svm.SVC(kernel=my_kernel)
scoring = {'accuracy': make_scorer(accuracy_score),
'precision': make_scorer(precision_score),
'recall': make_scorer(recall_score),
'f1_score': make_scorer(f1_score)}
scores = MD.cross_validate(clf, X_temp, Y, cv=10, scoring=scoring, return_train_score= True)
和
cv = StratifiedKFold(n_splits=10)
classifier = svm.SVC(kernel=my_kernel)
for train_index, test_index in cv.split(X, y):
classifier.fit(X[train_index], y[train_index])
ypred = classifier.predict(X[test_index])
kappa_score = cohen_kappa_score(y[test_index], ypred)
confusion = confusion_matrix(y[test_index], ypred)
print("kappa_score : " + str (kappa_score) + " \n confusion_matrix: \n" + str(confusion))
我也得到相同的结果,而没有使用交叉验证:
clf = svm.SVC(kernel=my_kernel)
clf.fit(X_train,Y_train)
s = clf.predict(X_test)
accuracy = accuracy_score(Y_test, s)
使用上述所有方法,我的准确度均为100%(对于其他测量也是如此)。虽然我希望得到更低的结果。可能是什么原因?可能与我的数据的类型或数量有关吗?