SVM随机搜索调参优化:基于训练集和验证集AUC指标的Python实现
SVM随机搜索调参优化:基于训练集和验证集AUC指标的Python实现
本文将介绍如何使用随机搜索方法对SVM模型进行调参优化,以满足训练集和验证集AUC均大于0.75,且二者差值小于0.1的条件。
代码实现
from sklearn.model_selection import RandomizedSearchCV
from sklearn.svm import SVC
from sklearn.metrics import roc_auc_score
# 定义参数空间
param_dist = {'C': [0.1, 1, 10, 100],
'kernel': ['linear', 'rbf', 'poly', 'sigmoid'],
'gamma': ['scale', 'auto'] + list(range(1, 11))}
# 定义SVM模型
svm = SVC(probability=True)
# 定义随机搜索
search = RandomizedSearchCV(svm, param_distributions=param_dist, n_iter=100, cv=5, n_jobs=-1)
# 进行随机搜索调参
while True:
search.fit(X_train, y_train)
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])
if train_auc >= 0.75 and val_auc >= 0.75 and abs(train_auc - val_auc) < 0.1:
break
# 输出最佳参数模型
best_model = search.best_estimator_
print('Best model parameters:', search.best_params_)
print('Best model AUC on validation set:', val_auc)
代码解释
- 首先,定义参数空间
param_dist,包含了需要调参的参数及其取值范围。 - 接着,定义SVM模型
svm。 - 再定义随机搜索
search,其中n_iter表示随机搜索的次数,cv表示交叉验证的折数,n_jobs表示使用的CPU核数。 - 进入while循环,每次进行一次随机搜索调参,并计算训练集和验证集的AUC值。如果满足条件,则跳出循环,否则继续调参。
- 最终输出最佳参数模型
best_model,包括最佳参数search.best_params_和在验证集上的AUC值val_auc。
总结
本文介绍了如何使用随机搜索方法对SVM模型进行调参优化,并提供了具体的Python代码实现。该方法可以有效地找到满足特定条件的最佳参数组合,从而提高模型的性能。需要注意的是,实际应用中可能需要根据具体情况调整参数空间和搜索策略。
原文地址: https://www.cveoy.top/t/topic/oJXS 著作权归作者所有。请勿转载和采集!