机器学习中根据训练组中及验证组的AUC均大于075且训练组AUC和验证组AUC差值小于01两个条件进行随机搜索调参若不满足条件则一直进行调参python代码
如下:
from sklearn.model_selection import RandomizedSearchCV
from sklearn.metrics import roc_auc_score
import numpy as np
# 定义要调参的参数范围
param_dist = {
"max_depth": [3, 5, 7, 9],
"min_samples_split": [2, 3, 4, 5],
"min_samples_leaf": [1, 2, 3, 4]
}
# 定义模型
model = DecisionTreeClassifier(random_state=42)
# 定义参数搜索器
search = RandomizedSearchCV(model, param_distributions=param_dist, cv=5, n_iter=20, random_state=42)
# 定义初始值
best_auc = 0.0
diff = 1.0
# 开始调参
while best_auc < 0.75 or diff > 0.1:
# 进行参数搜索
search.fit(X_train, y_train)
# 计算训练集和验证集的AUC
train_auc = roc_auc_score(y_train, search.predict_proba(X_train)[:, 1])
val_auc = roc_auc_score(y_val, search.predict_proba(X_val)[:, 1])
# 计算AUC差值
diff = np.abs(train_auc - val_auc)
# 更新最佳AUC和最佳参数
if val_auc > best_auc:
best_auc = val_auc
best_params = search.best_params_
# 打印当前训练结果
print("Train AUC: {:.4f} | Val AUC: {:.4f} | Diff: {:.4f}".format(train_auc, val_auc, diff))
# 输出最佳参数
print("Best Params:", best_params)
在上述代码中,我们使用了sklearn库中的RandomizedSearchCV函数进行随机搜索调参。定义了要搜索的参数范围,模型,参数搜索器,并设置了初始值。在while循环中进行参数搜索并计算训练集和验证集的AUC,同时计算AUC差值。如果验证集AUC大于最佳AUC,则更新最佳AUC和最佳参数。最后输出最佳参数。
需要注意的是,上述代码中的X_train、y_train、X_val和y_val需要根据实际情况进行修改
原文地址: https://www.cveoy.top/t/topic/hg1h 著作权归作者所有。请勿转载和采集!