littlebot
Published on 2025-04-18 / 1 Visits
0

【源码】基于Python的机器学习超参数正交搜索调参系统

项目简介

本项目是基于Python的机器学习超参数调整项目,采用正交搜索方法优化机器学习模型的超参数。在机器学习里,超参数调整是提升模型性能的关键,常见调参方法有网格搜索和随机搜索,而本项目的正交搜索结合二者优点,计算量小且结果相对准确,还能同时优化多个超参数。

项目的主要特性和功能

  1. 支持正交搜索、随机搜索和网格搜索三种超参数调整方法,便于对比不同方法效果。
  2. 可设计和生成正交表,能根据输入的超参数数量选择合适的正交表结构。
  3. 记录每次实验结果,包含均方根误差、交叉验证的方差和训练时间,还提供极差分析结果,方便手动调整超参数。
  4. 运用交叉验证对调整后的模型进行评估,验证超参数调整效果。

安装使用步骤

前提条件

假设用户已下载本项目的源码文件,且已安装Python以及项目所需的依赖库,如xgboostpandasnumpysklearn等。

使用步骤

  1. 准备数据:将训练数据保存为X.csvy.csv文件,分别代表特征数据和标签数据。
  2. 设计超参数:查看正交表,依据正交表设置超参数的取值范围,生成超参数正交表。示例代码如下: python from my_ort import ORT ort = ORT() ort.seeSets(4, see_num=10) params = { 'gamma': [0.3, 0.4, 0.5], 'subsample': [0.5, 0.7, 0.9], 'reg_lambda': [1, 5, 10], 'learning_rate': [0.01, 0.1, 0.3], 'max_depth': [3], 'colsample_bytree': [0.2], 'n_estimators': [750] } param_df = ort.genSets(params, mode=2)
  3. 进行训练:使用AdjustParam类进行模型训练和参数调整。示例代码如下: python from xgboost.sklearn import XGBRegressor import pandas as pd X = pd.read_csv('X.csv') y = pd.read_csv('y.csv') xgb_model = XGBRegressor(n_jobs=-1) from your_module import AdjustParam a = AdjustParam(X, y, 'neg_mean_squared_error') a.run_ort(model=xgb_model, df_params=param_df)
  4. 查看结果:查看正交搜索自动选出的模型、所有实验结果和极差分析结果。示例代码如下: python print(a.model) print(a.ort_res) print(a.param_res)
  5. 结果验证:使用交叉验证对调整后的模型进行评估。示例代码如下: python from sklearn.model_selection import cross_val_score import numpy as np def rmsle_cv(model, n_folds=5): rmse = np.sqrt(-cross_val_score(model, X.values, y, scoring="neg_mean_squared_error", cv=n_folds)) return rmse score = rmsle_cv(a.model) print("error: {:.4f} ({:.4f})".format(score.mean(), score.std()))
  6. 随机搜索和网格搜索(可选):使用RandomizedSearchCVGridSearchCV进行随机搜索和网格搜索,并与正交搜索的结果进行比较。示例代码如下: python from sklearn.model_selection import GridSearchCV, RandomizedSearchCV import time param_test = { 'gamma': [0.3, 0.4, 0.5], 'subsample': [0.5, 0.7, 0.9], 'reg_lambda': [1, 5, 10], 'learning_rate': [0.01, 0.1, 0.3] } xgb_model = XGBRegressor( max_depth=3, colsample_bytree=0.2, learning_rate=0.1, n_estimators=750, n_jobs=-1 ) t0 = time.time() rand = RandomizedSearchCV(xgb_model, param_test, cv=5, scoring='neg_mean_squared_error', n_iter=9, random_state=1) rand.fit(X, y) t_rand = time.time() - t0 print('随机搜索-度量记录:', rand.cv_results_) print('随机搜索-最佳度量值:', np.sqrt(-rand.best_score_)) print('随机搜索-最佳参数:', rand.best_params_) print('随机搜索-最佳模型:', rand.best_estimator_) t1 = time.time() gsearch = GridSearchCV(xgb_model, param_grid=param_test, scoring='neg_mean_squared_error', cv=5) gsearch.fit(X, y) t_gsearch = time.time() - t1 print('网格搜索-度量记录:', gsearch.cv_results_) print('网格搜索-最佳度量值:', np.sqrt(-gsearch.best_score_)) print('网格搜索-最佳参数:', gsearch.best_params_) print('网格搜索-最佳模型:', gsearch.best_estimator_)

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】