Я хотел бы запустить рекурсивное исключение функций для нескольких подмножеств моих данных (т. е. каждое подмножество предназначено для каждого конкретного клиента) с количеством функций 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
Как выбрать наилучшее количество функций и лучший алгоритм с максимальным F1 и ROC с рекурсивным устранением функций? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение