如何调整模型的超参数

2025-01-22  本文已影响0人  梅西爱骑车

当大模型性能未达预期时,可采用以下方法调整超参数以优化模型:

手动调参

网格搜索(Grid Search)

from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
from sklearn.datasets import load_iris

# 加载数据
iris = load_iris()
X = iris.data
y = iris.target

# 定义超参数网格
param_grid = {'C': [0.1, 1, 10], 'kernel': ['linear', 'rbf']}

# 创建模型
model = SVC()

# 创建网格搜索对象
grid_search = GridSearchCV(model, param_grid, cv=5)

# 进行网格搜索
grid_search.fit(X, y)

# 输出最佳参数
print("最佳参数:", grid_search.best_params_)

随机搜索(Random Search)

from sklearn.model_selection import RandomizedSearchCV
from sklearn.ensemble import RandomForestClassifier
import numpy as np
from sklearn.datasets import load_iris

# 加载数据
iris = load_iris()
X = iris.data
y = iris.target

# 定义超参数分布
param_dist = {'n_estimators': np.arange(10, 100, 10),
              'max_depth': [None, 3, 5, 10]}

# 创建模型
model = RandomForestClassifier()

# 创建随机搜索对象
random_search = RandomizedSearchCV(model, param_dist, n_iter=10, cv=5)

# 进行随机搜索
random_search.fit(X, y)

# 输出最佳参数
print("最佳参数:", random_search.best_params_)

贝叶斯优化(Bayesian Optimization)

from skopt import BayesSearchCV
from sklearn.datasets import load_iris
from sklearn.svm import SVC

# 加载数据
iris = load_iris()
X = iris.data
y = iris.target

# 定义超参数搜索空间
search_space = {'C': (1e-6, 1e+6, 'log-uniform'),
                'gamma': (1e-6, 1e+1, 'log-uniform'),
                'degree': (1, 8),
                'kernel': ['linear', 'poly', 'rbf']}

# 创建模型
model = SVC()

# 创建贝叶斯优化搜索对象
opt = BayesSearchCV(model, search_space, n_iter=32, cv=3)

# 进行贝叶斯优化搜索
opt.fit(X, y)

# 输出最佳参数
print("最佳参数:", opt.best_params_)
上一篇 下一篇

猜你喜欢

热点阅读