【机器学习 模型调参】GridSearchCV模型调参利器

2024-09-07 05:58

本文主要是介绍【机器学习 模型调参】GridSearchCV模型调参利器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

导入模块sklearn.model_selection

from sklearn.model_selection import GridSearchCV

GridSearchCV 称为网格搜索交叉验证调参,它通过遍历传入的参数的所有排列组合,通过交叉验证的方式,返回所有参数组合下的评价指标得分,GridSearchCV 函数的参数详细解释如下:

class sklearn.model_selection.GridSearchCV(estimator,param_grid,scoring = None,n_jobs = None,iid ='deprecated',refit = True,cv = None,verbose = 0,pre_dispatch ='2 * n_jobs',error_score = nan,return_train_score = False )GridSearchCV官方说明参数:estimator:scikit-learn 库里的算法模型;
param_grid:需要搜索调参的参数字典;
scoring:评价指标,可以是 auc, rmse,logloss等;
n_jobs:并行计算线程个数,可以设置为 -1,这样可以充分使用机器的所有处理器,并行数量越多,有利于缩短调参时间;
iid:如果设置为True,则默认假设数据在每折中具有相同地分布,并且最小化的损失是每个样本的总损失,而不是每折的平均损失。简单点说,就是如果你可以确定 cv 中每折数据分布一致就设置为 True,否则设置为 False;
cv:交叉验证的折数,默认为3折;常用属性:
cv_results_:用来输出cv结果的,可以是字典形式也可以是numpy形式,还可以转换成DataFrame格式
best_estimator_:通过搜索参数得到的最好的估计器,当参数refit=False时该对象不可用
best_score_:float类型,输出最好的成绩
best_params_:通过网格搜索得到的score最好对应的参数
best_index_:对应于最佳候选参数设置的索引(cv_results_数组)。cv_results _ [‘params’] [search.best_index_]中的dict给出了最佳模型的参数设置,给出了最高的平均分数(search.best_score_)。
scorer_:评分函数
n_splits_:交叉验证的数量
refit_time_:refit所用的时间,当参数refit=False时该对象不可用常用函数:decision_function(X):返回决策函数值(比如svm中的决策距离)
fit(X,y=None,groups=None,fit_params):在数据集上运行所有的参数组合
get_params(deep=True):返回估计器的参数
inverse_transform(Xt):Call inverse_transform on the estimator with the best found params.
predict(X):返回预测结果值(0/1predict_log_proba(X): Call predict_log_proba on the estimator with the best found parameters.
predict_proba(X):返回每个类别的概率值(有几类就返回几列值)
score(X, y=None):返回函数
set_params(**params):Set the parameters of this estimator.
transform(X):在X上使用训练好的参数属性grid_scores_已经被删除,改用:means = grid_search.cv_results_['mean_test_score']
params = grid_search.cv_results_['params']

GBDT例子:


# -*- coding: utf-8 -*-# 载入包
import pandas as pd
from sklearn.model_selection import train_test_split
from xgboost import XGBRegressor
from sklearn.metrics import mean_squared_error,r2_score,mean_absolute_error
import warnings
warnings.filterwarnings('ignore')
from sklearn.externals import joblib
from sklearn.model_selection import GridSearchCV
import numpy as np# 读取数据
data_path=r'D:\data.txt'
# 导入数据
data=pd.read_table(data_path)# 筛选自变量
X=data.iloc[:,1:]
# 筛选因变量
y=data.iloc[:,0]
# 提取特征名
feature_names=list(X.columns)
# 切分数据,划分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=33)param_gbdt3 = {'learning_rate':[0.06,0.07,0.08,0.09,0.1],'n_estimators':[100,150,200,250,300]}gbdt_search2 = GridSearchCV(estimator=GradientBoostingRegressor(loss='ls',max_depth=9,max_features=9,subsample=0.8,min_samples_leaf=4, min_samples_split=6),n_jobs=-1,param_grid=param_gbdt3,scoring='neg_mean_squared_error',iid=False,cv=5)
gbdt_search2.fit(X_train,y_train)
print(gbdt_search2.best_params_)

2、xgboost例子:

# -*- coding: utf-8 -*-# 载入包
import pandas as pd
from sklearn.model_selection import train_test_split
from xgboost import XGBRegressor
from sklearn.metrics import mean_squared_error,r2_score,mean_absolute_error
import warnings
warnings.filterwarnings('ignore')
from sklearn.externals import joblib
from sklearn.model_selection import GridSearchCV
import numpy as np# 读取数据
data_path=r'D:\data.txt'
# 导入数据
data=pd.read_table(data_path)# 筛选自变量
X=data.iloc[:,1:]
# 筛选因变量
y=data.iloc[:,0]
# 提取特征名
feature_names=list(X.columns)
# 切分数据,划分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=33)cv_params  = {'n_estimators': [280,290,300,320,330]}other_params = {'learning_rate':0.1,'max_depth':8,'min_child_weight':1,'gamma':0.05,'subsample':0.8,'colsample_bytree':0.8,'reg_alpha':0,'reg_lambda':1
}
xgb_model_ = XGBRegressor(**other_params)
xgb_search = GridSearchCV(xgb_model_,param_grid=cv_params ,scoring='r2',iid=False,n_jobs=-1,cv=5)xgb_search.fit(X_train, y_train)means = xgb_search.cv_results_['mean_test_score']
params = xgb_search.cv_results_['params']print(means)
print(params)
print(xgb_search.best_params_)
print(xgb_search.best_score_)

常用参数解读:

estimator:所使用的分类器,如果比赛中使用的是XGBoost的话,就是生成的model。比如: model = xgb.XGBRegressor(**other_params)
param_grid:值为字典或者列表,即需要最优化的参数的取值。比如:cv_params = {‘n_estimators’: [550, 575, 600, 650, 675]}
scoring :准确度评价标准,默认None,这时需要使用score函数;或者如scoring=‘roc_auc’,根据所选模型不同,评价准则不同。字符串(函数名),或是可调用对象,需要其函数签名形如:scorer(estimator, X, y);如果是None,则使用estimator的误差估计函数。scoring参数选择如下:
scoring参数 说明:
在这里插入图片描述

这篇关于【机器学习 模型调参】GridSearchCV模型调参利器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1144247

相关文章

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus

本地私有化部署DeepSeek模型的详细教程

《本地私有化部署DeepSeek模型的详细教程》DeepSeek模型是一种强大的语言模型,本地私有化部署可以让用户在自己的环境中安全、高效地使用该模型,避免数据传输到外部带来的安全风险,同时也能根据自... 目录一、引言二、环境准备(一)硬件要求(二)软件要求(三)创建虚拟环境三、安装依赖库四、获取 Dee

DeepSeek模型本地部署的详细教程

《DeepSeek模型本地部署的详细教程》DeepSeek作为一款开源且性能强大的大语言模型,提供了灵活的本地部署方案,让用户能够在本地环境中高效运行模型,同时保护数据隐私,在本地成功部署DeepSe... 目录一、环境准备(一)硬件需求(二)软件依赖二、安装Ollama三、下载并部署DeepSeek模型选

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt