В моем наборе данных 93 наблюдения и 24 объекта.Я использую модель SVM для классификации либо в класс 0, либо в класс 1.
У меня есть несколько вопросов о подходе перекрестной проверки Leave One Out, который я использовал, особенно в отношении точности, точности, отзыва и AUC
Я проверил методы в своем коде ниже, но что-то определенно не так, что вы можете видеть из стандартного отклонения точности 0,91.
Что я пропустил?
Дайте мне знать, если вам нужно больше информации.Спасибо!
#creates feature set and class#
x = np.array(df.drop(['target'], 1))
y = np.array(df['target'])
xs = scale(x)
#Here is the LOOCV code to achieve accuracy#
svm_model = SVC(C=0.1,kernel ='linear', probability = True)
loo = LeaveOneOut(93)
acc = cross_val_score(estimator=svm_model,
X=xs,
y=y,
cv=loo)
print(acc)
print("Accuracy: %0.2f (+/- %0.2f)" % (acc.mean(), acc.std() * 2))
#prints 0.71 +- 0.91
[0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0]
#Here is what I tried to get precision and recall#
predicted = cross_val_predict(svm_model, xs, y, cv = loo)
print (recall_score(y, predicted))
#prints 23%
print (precision_score(y, predicted))
#prints 46%
print (roc_auc_score(y, predicted))
#prints 56%