Как выбрать наилучшее количество функций и лучший алгоритм с максимальным F1 и ROC с рекурсивным устранением функций?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как выбрать наилучшее количество функций и лучший алгоритм с максимальным F1 и ROC с рекурсивным устранением функций?

Сообщение Anonymous »

Я хотел бы запустить рекурсивное исключение функций для нескольких подмножеств моих данных (т. е. каждое подмножество предназначено для каждого конкретного клиента) с количеством функций X (т. е. 4–12) и количеством Y разных алгоритмов (т. е. DecisionTreeClassifier, GradientBoostingClassifier). , Логистическая регрессия).
Вместо того, чтобы просматривать результаты один за другим, как создать код, который может генерировать и отображать наилучшее количество функций с лучшим алгоритмом для каждого подмножества (самая высокая точность) балл отзыва, за которым следует самый высокий ROC)? Мой набор данных несбалансирован.
Ниже представлена ​​моя попытка, которая может сгенерировать результат для различного количества признаков логистической регрессии, но мне все равно нужно заменить алгоритм в оценщике и просмотреть результат. по одному.
for i in range(4, 13):
rfe = RFE(estimator=DecisionTreeClassifier(), n_features_to_select=i)
rfe.fit(X_resampled,Y_resampled)
selector = X_resampled.columns[rfe.support_]
X_train_selected = X_resampled[selector]
X_test_selected = X_test[selector]
log_reg_model = sm.Logit(Y_resampled, X_train_selected).fit()
pred_test = log_reg_model.predict(X_test_selected)
pred_test_1 = np.where(pred_test>0.5,1,0)
logit_roc_auc = roc_auc_score(Y_test, pred_test)
fpr, tpr, thresholds = roc_curve(Y_test, pred_test)
print(f'Number of features: {i},accuracy score: {accuracy_score(Y_test, pred_test_1)}')
print(f'Number of features: {i},ROC:',logit_roc_auc)
precision, recall, thresholds = precision_recall_curve(Y_test, pred_test)
print(f'Number of features: {i},f1 score: {f1_score(Y_test, pred_test_1)}')
print(f'Number of features: {i},PRC AUC:{auc(recall,precision)}')
precision = precision_score(Y_test, pred_test_1)
recall = recall_score(Y_test, pred_test_1)
print(f'Number of features: {i},Recall:', recall)
print(f'Number of features: {i},Precision:', precision)


Подробнее здесь: https://stackoverflow.com/questions/791 ... est-f1-and
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»