机器学习调参:基于AUC指标和差值限制的GridSearchCV示例
以下是一个使用sklearn中的GridSearchCV进行调参的例子,其中使用了一个基于AUC的评价指标,同时限制AUC差值小于0.1:
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import make_scorer, roc_auc_score
from sklearn.model_selection import StratifiedKFold
from sklearn.tree import DecisionTreeClassifier
# 假设训练集为X_train, y_train,验证集为X_val, y_val
# 定义评价指标为AUC
scorer = make_scorer(roc_auc_score)
# 定义决策树分类器
clf = DecisionTreeClassifier()
# 设定参数范围
param_grid = {
'max_depth': [3, 4, 5, 6, 7],
'min_samples_leaf': [10, 20, 30, 40, 50]
}
# 定义交叉验证策略
cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
# 定义GridSearchCV对象,设置参数
grid_search = GridSearchCV(clf, param_grid, scoring=scorer, cv=cv)
# 进行网格搜索
grid_search.fit(X_train, y_train)
# 获取最佳分类器
best_clf = grid_search.best_estimator_
# 预测验证集
y_val_pred = best_clf.predict_proba(X_val)[:, 1]
# 计算验证集AUC
val_auc = roc_auc_score(y_val, y_val_pred)
# 计算训练集AUC
y_train_pred = best_clf.predict_proba(X_train)[:, 1]
train_auc = roc_auc_score(y_train, y_train_pred)
# 判断是否满足条件
if val_auc > 0.75 and train_auc > 0.75 and abs(val_auc - train_auc) < 0.1:
print('调参成功!')
else:
print('调参失败!')
需要注意的是,以上代码中的评价指标和交叉验证策略可以根据具体情况进行修改。如果需要使用其他评价指标,可以参考sklearn.metrics中的函数;如果需要使用其他交叉验证策略,可以参考sklearn.model_selection中的函数。
原文地址: https://www.cveoy.top/t/topic/oJWF 著作权归作者所有。请勿转载和采集!