Согласно документации sklearn, в некоторых моделях можно изменить метод decision_function
для улучшения результатов.Например, если вы хотите получить более высокий отзыв в задаче двоичной классификации, вы можете изменить пороговое значение до значения ниже 0.Но поскольку, если вы сделаете это в своем тесте, вы можете добавить некоторую информацию после обучения, чтобы прогнозы были слишком реалистичными.
Мне было интересно, есть ли способ сделать это с помощью перекрестной проверки для выборапорог без использования тестового набора.Таким образом, вы можете применить его к вашему тестовому комплекту более безопасным способом.
В этом примере мы имеем простую реализацию без использования стратегии перекрестной проверки (от Введение в машинное обучение с книгой Python)
from mglearn.datasets import make_blobs
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
X, y =make_blobs(n_samples=(400,50), centers=2, cluster_std=[7.0,2],
random_state=22)
X_train, X_test, y_train, Y_test = train_test_split(X,y,random_state=0)
svc= SVC(gamma=0.5).fit(X_train,y_train)
y_pred_lower_threshold = svc.decision_function(X_test) > -.8
print(classification_report(Y_test, y_pred_lower_threshold))
Что приводит к такому результату
precision recall f1-score support
0 1.00 0.81 0.89 104
1 0.31 1.00 0.47 9
avg / total 0.95 0.82 0.86 113
Я почти уверен, что для этого должен быть способ использования набора проверки.Но я не могу понять, как точно применить это, даже если я понимаю.