以下是一种可能的Python代码实现:

from sklearn.svm import SVC
from sklearn.model_selection import RandomizedSearchCV
from sklearn.metrics import roc_auc_score
import numpy as np

# X_train, y_train, X_val, y_val为训练集和验证集的特征和标签
# param_distributions为SVM的参数分布范围
# n_iter为随机搜索的迭代次数
# scoring为评估指标,这里使用AUC作为评估指标
def random_search_SVM(X_train, y_train, X_val, y_val, param_distributions, n_iter=10, scoring='roc_auc'):
    best_score = 0
    while True:
        # 随机搜索SVM的参数
        svm = SVC()
        random_search = RandomizedSearchCV(svm, param_distributions, n_iter=n_iter, scoring=scoring)
        random_search.fit(X_train, y_train)
        
        # 计算训练集和验证集的AUC
        y_train_prob = random_search.predict_proba(X_train)[:, 1]
        train_auc = roc_auc_score(y_train, y_train_prob)
        y_val_prob = random_search.predict_proba(X_val)[:, 1]
        val_auc = roc_auc_score(y_val, y_val_prob)
        
        # 判断是否满足条件
        if train_auc > 0.75 and val_auc > 0.75 and abs(train_auc - val_auc) < 0.1:
            # 输出最佳参数模型
            print('Best parameters:', random_search.best_params_)
            print('Best score:', random_search.best_score_)
            return random_search.best_estimator_
        
        # 记录当前最佳结果
        if val_auc > best_score:
            best_score = val_auc
            best_estimator = random_search.best_estimator_
``

原文地址: https://www.cveoy.top/t/topic/hg1C 著作权归作者所有。请勿转载和采集!

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