获得所有测量值(准确性,召回率等)100%

时间:2019-07-15 08:55:59

标签: python svm cross-validation

我对数据集进行了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%(对于其他测量也是如此)。虽然我希望得到更低的结果。可能是什么原因?可能与我的数据的类型或数量有关吗?

0 个答案:

没有答案