赞
踩
网格搜索调参方法是一种通过穷举地尝试不同的参数组合来找到最佳参数配置的方法。它像是在一个参数的取值范围上布满了网格点,然后逐个尝试每个网格点上的参数组合,最后找到性能最好的参数配置。
from sklearn.model_selection import GridSearchCV from sklearn.svm import SVC from sklearn.datasets import load_iris # 加载数据集 X, y = load_iris(return_X_y=True) # 定义参数空间 param_grid = { 'C': [0.1, 1, 10], 'gamma': [0.01, 0.1, 1], 'kernel': ['linear', 'rbf'] } # 定义模型和评估指标 model = SVC() scoring = 'accuracy' # 使用网格搜索进行参数搜索 grid_search = GridSearchCV(estimator=model, param_grid=param_grid, scoring=scoring, cv=5) grid_search.fit(X, y) # 输出最佳参数配置和性能 best_params = grid_search.best_params_ best_score = grid_search.best_score_ print("Best parameters found: ", best_params) print("Best accuracy found: ", best_score)
运行结果:
Best parameters found: {'C': 1, 'gamma': 0.01, 'kernel': 'linear'}
Best accuracy found: 0.9800000000000001
随机搜索调参方法是一种通过随机选择参数组合来寻找最佳参数配置的方法。与网格搜索不同,它不需要穷举地尝试所有可能的参数组合,而是随机选择一部分参数组合进行评估。
from sklearn.model_selection import RandomizedSearchCV from sklearn.svm import SVC from sklearn.datasets import load_iris from scipy.stats import uniform # 加载数据集 X, y = load_iris(return_X_y=True) # 定义参数空间 param_dist = { 'C': uniform(loc=0.1, scale=10), 'gamma': uniform(loc=0.01, scale=1), 'kernel': ['linear', 'rbf'] } # 定义模型和评估指标 model = SVC() scoring = 'accuracy' # 使用随机搜索进行参数搜索 random_search = RandomizedSearchCV(estimator=model, param_distributions=param_dist, n_iter=50, scoring=scoring, cv=5) random_search.fit(X, y) # 输出最佳参数配置和性能 best_params = random_search.best_params_ best_score = random_search.best_score_ print("Best parameters found: ", best_params) print("Best accuracy found: ", best_score)
代码运行结果:
Best parameters found: {'C': 0.9955934731178205, 'gamma': 0.5857873316084142, 'kernel': 'linear'}
Best accuracy found: 0.9866666666666667
from sklearn.model_selection import RandomizedSearchCV from sklearn.ensemble import GradientBoostingClassifier from scipy.stats import uniform # 定义超参数搜索空间 param_dist = {'learning_rate': uniform(0, 1)} # 定义模型 model = GradientBoostingClassifier() # 定义随机搜索 rs = RandomizedSearchCV(model, param_distributions=param_dist, n_iter=100) # 进行随机搜索训练 rs.fit(X_train, y_train) # 输出最优参数 print(rs.best_params_)
代码运行结果:
{'learning_rate': 0.24163237536580073}
贝叶斯优化调参方法是一种通过建立概率模型来优化机器学习模型参数的方法。它利用贝叶斯定理,根据已有的参数-性能观察数据,通过不断更新参数的概率分布,来预测最有可能获得最佳性能的参数配置。
from skopt import BayesSearchCV from sklearn.svm import SVC from sklearn.datasets import load_iris # 加载数据集 X, y = load_iris(return_X_y=True) # 定义参数空间 param_space = { 'C': (0.1, 10.0, 'log-uniform'), 'gamma': (0.01, 1.0, 'log-uniform'), 'kernel': ['linear', 'rbf'] } # 定义目标函数 def objective(params): clf = SVC(**params) return -np.mean(cross_val_score(clf, X, y, cv=5, n_jobs=-1, scoring='accuracy')) # 使用贝叶斯优化进行参数搜索 opt = BayesSearchCV(SVC(), param_space, n_iter=50, cv=5) opt.fit(X, y) # 输出最佳参数配置和性能 print("Best parameters found: ", opt.best_params_) print("Best accuracy found: ", -opt.best_score_)
运行代码结果:
Best parameters found: OrderedDict([('C', 1.624719571789727), ('gamma', 0.2387787530070488), ('kernel', 'rbf')])
Best accuracy found: -0.9866666666666667
pip install scikit-optimize
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。