【机器学习 模型调参】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

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验