Python代码:根据测试集AUC值自动选择机器学习模型并调整参数
以下是一个使用GridSearchCV自动选择机器学习模型及调整参数的示例代码。该代码使用了sklearn库中的几种常见分类器,并通过交叉验证来评估每个分类器的性能。然后,它选择最高AUC值的分类器,并使用GridSearchCV来进一步优化其参数。
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import roc_auc_score
from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.naive_bayes import GaussianNB
from sklearn.tree import DecisionTreeClassifier
# define the classifiers to test
classifiers = {
'Random Forest': RandomForestClassifier(),
'Logistic Regression': LogisticRegression(),
'Support Vector Machines': SVC(),
'Naive Bayes': GaussianNB(),
'Decision Tree': DecisionTreeClassifier()
}
# define the parameter grids for each classifier
param_grids = {
'Random Forest': {'n_estimators': [10, 50, 100, 200], 'max_depth': [None, 5, 10, 20]},
'Logistic Regression': {'penalty': ['l1', 'l2'], 'C': [0.1, 1, 10]},
'Support Vector Machines': {'kernel': ['linear', 'rbf'], 'C': [0.1, 1, 10]},
'Naive Bayes': {},
'Decision Tree': {'max_depth': [None, 5, 10, 20], 'min_samples_split': [2, 5, 10]}
}
# perform grid search cross validation to find the best classifier and parameters
best_auc = 0
best_classifier = None
best_params = None
for name, clf in classifiers.items():
param_grid = param_grids[name]
grid_search = GridSearchCV(clf, param_grid, cv=5, scoring='roc_auc')
grid_search.fit(X_train, y_train)
auc = roc_auc_score(y_test, grid_search.predict_proba(X_test)[:, 1])
print(name, 'AUC:', auc)
if auc > best_auc:
best_auc = auc
best_classifier = grid_search.best_estimator_
best_params = grid_search.best_params_
print('Best Classifier:', best_classifier)
print('Best Parameters:', best_params)
print('Best AUC:', best_auc)
在上述代码中,X_train和y_train是训练数据集,X_test和y_test是测试数据集。GridSearchCV函数将每个分类器的参数网格和交叉验证数量传递给它,以在训练数据上拟合和评估每个分类器。最后,代码输出最高AUC值的分类器及其最佳参数。
原文地址: https://www.cveoy.top/t/topic/oJTs 著作权归作者所有。请勿转载和采集!