Если вы хотите увеличить отзыв вашей модели, есть гораздо более быстрый способ сделать это.
Вы можете вычислить точную кривую возврата , используя sklearn.
Эта кривая даст вам компромисс между точностью и отзывом для вашей модели.
Это означает, что если вы хотите увеличить отзыв своей модели, вы можете попросить случайный лес получить вероятности для каждого класса, добавить 0,1 к классу 1 и вычесть 0,1 к вероятности класса 0. Это будет эффективно увеличить ваш отзыв
Если вы построите кривую точного возврата, вы сможете найти оптимальный порог для равной точности и восстановить
Вот вам пример из sklearn
from sklearn import svm, datasets
from sklearn.model_selection import train_test_split
import numpy as np
iris = datasets.load_iris()
X = iris.data
y = iris.target
# Add noisy features
random_state = np.random.RandomState(0)
n_samples, n_features = X.shape
X = np.c_[X, random_state.randn(n_samples, 200 * n_features)]
# Limit to the two first classes, and split into training and test
X_train, X_test, y_train, y_test = train_test_split(X[y < 2], y[y < 2],
test_size=.5,
random_state=random_state)
# Create a simple classifier
classifier = svm.LinearSVC(random_state=random_state)
classifier.fit(X_train, y_train)
y_score = classifier.decision_function(X_test)
from sklearn.metrics import precision_recall_curve
import matplotlib.pyplot as plt
from sklearn.utils.fixes import signature
precision, recall, _ = precision_recall_curve(y_test, y_score)
# In matplotlib < 1.5, plt.fill_between does not have a 'step' argument
step_kwargs = ({'step': 'post'}
if 'step' in signature(plt.fill_between).parameters
else {})
plt.step(recall, precision, color='b', alpha=0.2,
where='post')
plt.fill_between(recall, precision, alpha=0.2, color='b', **step_kwargs)
plt.xlabel('Recall')
plt.ylabel('Precision')
plt.ylim([0.0, 1.05])
plt.xlim([0.0, 1.0])
Что должно дать вам что-то вроде это