以下是一个使用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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录