sklearn GridSearchCV网格搜索案例与代码
文章目录
- 准备数据
- 网格搜索参数
- 评估结果
- 全部代码
需要的包如下:
import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.model_selection import KFold
准备数据
这里以随机森林为例,前期的准备数据:
def get_train_x_y(): # 这里使用随机生成数,来表示数据x = pd.DataFrame(data=np.random.randint(0, 10, size=(100, 5)))y = np.random.randint(0, 2, 100)x = StandardScaler().fit_transform(x)return x, yif __name__ == '__main__':x_train, y_train = get_train_x_y()x_train, x_test, y_train, y_test = train_test_split(x_train, y_train, test_size=0.3)
网格搜索参数
# 建立随机森林模型rf_model = RandomForestClassifier()rf_param = {'n_estimators': range(25, 100, 25)} # 网格搜索的参数cv = KFold()rf_grid = GridSearchCV(rf_model, rf_param, cv=cv, scoring=['accuracy', 'recall'], refit=False)rf_grid.fit(x_train, y_train)
评估结果
def get_score_by_grid(grid):score_df = pd.DataFrame()for score in grid.scoring: # 把网格搜索的结果拿出来,构造成一个dataframemean = grid.cv_results_['mean_test_' + score]score_df = pd.concat([pd.DataFrame(mean, columns=['mean_test_' + score]).T, score_df])std = grid.cv_results_['std_test_' + score]score_df = pd.concat([pd.DataFrame(std, columns=['std_test_' + score]).T, score_df])return score_dfprint(get_score_by_grid(rf_grid))
全部代码
import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.model_selection import ShuffleSplit, KFolddef get_score_by_grid(grid):score_df = pd.DataFrame()for score in grid.scoring:mean = grid.cv_results_['mean_test_' + score]score_df = pd.concat([pd.DataFrame(mean, columns=['mean_test_' + score]).T, score_df])std = grid.cv_results_['std_test_' + score]score_df = pd.concat([pd.DataFrame(std, columns=['std_test_' + score]).T, score_df])return score_dfdef get_train_x_y():x = pd.DataFrame(data=np.random.randint(0, 10, size=(100, 5)))y = np.random.randint(0, 2, 100)x = StandardScaler().fit_transform(x)return x, yif __name__ == '__main__':x_train, y_train = get_train_x_y()x_train, x_test, y_train, y_test = train_test_split(x_train, y_train, test_size=0.3)# 建立随机森林模型rf_model = RandomForestClassifier()rf_param = {'n_estimators': range(25, 100, 25)} # 网格搜索的参数cv = KFold()rf_grid = GridSearchCV(rf_model, rf_param, cv=cv, scoring=['accuracy', 'recall'], refit=False)rf_grid.fit(x_train, y_train)print(get_score_by_grid(rf_grid))
sklearn GridSearchCV网格搜索案例与代码相关推荐
- 【Python-ML】SKlearn库网格搜索和交叉验证
# -*- coding: utf-8 -*- ''' Created on 2018年1月18日 @author: Jason.F @summary: GridSearch网格搜索:同一模型下组合参 ...
- kfold_机器学习gridsearchcv(网格搜索)和kfold validation(k折验证)
网格搜索算法是一种通过遍历给定的参数组合来优化模型表现的方法. 以决策树为例,当我们确定了要使用决策树算法的时候,为了能够更好地拟合和预测,我们需要调整它的参数.在决策树算法中,我们通常选择的参数是决 ...
- Grid SearchCV(网格搜索) 用法代码演示
注意没有参数 n_iter=300 否则报错 TypeError: __init__() got an unexpected keyword argument 'n_iter' https://www ...
- python网格搜索核函数_机器学习笔记——模型调参利器 GridSearchCV(网格搜索)参数的说明...
算法 数据结构 机器学习笔记--模型调参利器 GridSearchCV(网格搜索)参数的说明 GridSearchCV,它存在的意义就是自动调参,只要把参数输进去,就能给出最优化的结果和参数.但是这个 ...
- 加载svr模型_机器学习XGBoost实战,网格搜索自动调参,对比随机森林,线性回归,SVR【完整代码(含注释)+数据集见原文链接】...
建议:阅读2020.8.7的文章,完全了解GDBT和XGBT的原理. 机器学习- XGBoost,GDBT[过程:决策树,集成学习,随机森林,GDBT,XGBT,LightGBM] 本次实践内容: 数 ...
- 【数学建模】机器学习预测算法(KNN、随机森林、网格搜索对决策树、支持向量机)(Python代码实现)【2021华为杯】
目录 1 题目 2 数据集介绍及建模目标 3 问题 4 简化描述 5 Python代码实现 1 题目 乳腺癌是目前世界上最常见,致死率较高的癌症之一.乳腺癌的发展与雌激素受体密切相关,有研究发现,雌激 ...
- Lesson 6.5Lesson 6.6.1Lesson 6.6.2 机器学习调参基础理论与网格搜索多分类评估指标的macro与weighted过程GridSearchCV的进阶使用方法
Lesson 6.5 机器学习调参基础理论与网格搜索 在上一小节执行完手动调参之后,接下来我们重点讨论关于机器学习调参的理论基础,并且介绍sklearn中调参的核心工具--GridSearchCV. ...
- sklearn Grid Search 网格搜索
1. 定义 Grid Search:选取模型的最优超参数.通过优化超参数之间的最优组合来改善模型性能. (获取最优超参数的方式可以绘制验证曲线,但是验证曲线只能每次获取一个最优超参数.如果多个超参数有 ...
- 机器学习之网格搜索技术,如何在Auto-sklearn中应用网格搜索技术
文章目录 一,机器学习中的网格搜索技术是怎么回事 二,通俗解释 三,在一般情况下使用网格搜索技术 四,GridSearchCV网格搜索技术的原理 五,如何在Auto-sklearn中使用网格搜索技术 ...
最新文章
- Disruptor并发框架--学习笔记
- 通过Java 8中的Applicative Builder组合多个异步结果
- 带码农《手写Mybatis》进度3:实现映射器的注册和使用
- java难学还是pythonnanxue_关于python:为什么numpy中的“ NaN”比“ -np.inf”更小?
- 剑指offer——30.包含min函数的栈
- Hilbert变换C语言实现学习
- 利用assimp显示gltf
- 常见测试概念-分级测试、灰度测试、AB测试
- 【计蒜客 A1594 --- 封印之门】floyd
- java获取网络时间_java使用ntp同步获取网络时间
- 计算机数制转换操作方法,计算机数制转换新方法
- 爬取优美图库里的照片,并存到文件夹中
- 通过Htpp访问svn内容
- V2.0 版本的 《JavaGuide面试突击版》来啦!带着它的在线阅读版本来啦!
- 【数据挖掘】2022数据挖掘之Matplotlib完整使用(折线图、散点图、柱状图、直方图、饼图)
- Excel基础教程(1)
- 你喜欢这个邮箱代码吗?用代码实现邮件的撰写和发送
- 如何知道输入的字符的ASCII码值呐?
- 根据银行卡号查询该银行卡的签发银行
- ZYNQ PL操作DDR内存读写测试
热门文章
- Metal:对开发者和用户来说意味着什么
- QR code 二维码基础入门教程
- BZOJ 1006 神奇的国度(弦图的染色数)
- Redis源码分析(一)--Redis结构解析
- 老男孩教育每日一题-124天:当我们使用ssh-keygen命令的时候,如何一键非交互生产密钥对呢?...
- 光伏农业七大问题不解决 投资者恐“先驱”变“先烈”
- Android开发环境搭建与入门Hello World
- Eclipse REST 库使用
- c语言node类型_高阶宏的妙用技法,C语言宏你所不知道的聪明技巧
- tp5 database.php,Tp5项目修改数据库