机器学习调参

news/2024/4/20 17:00:13/文章来源:https://blog.csdn.net/weixin_43985130/article/details/128952765

机器学习调参

  • 常用调参方法举例
    • K邻近算法(最常规版本)
    • 加入交叉验证
    • 加上网格搜索
    • GridSearchCV
    • 函数介绍
      • GridSearchCV
      • cross_val_score

常用调参方法举例

sklearn使得我们在很多编写代码的时候更多的工作倾向于调参数而不是去写算法本身,本篇文章整理了一下常用的调参方式。

K邻近算法(最常规版本)

import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
# 导入鸢尾花数据
iris=datasets.load_iris()
iris_X=iris.data
iris_y=iris.target
#查看前两行数据
print(iris_X[:2,:])
#[[5.1 3.5 1.4 0.2]
#[4.9 3.  1.4 0.2]]
#查看结果集
print(iris_y)
#划分数据
X_train,X_test,y_train,y_test=train_test_split(iris_X,iris_y,test_size=0.3,random_state=3)#训练模型
knn=KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train,y_train)#预测值
print(knn.predict(X_test))#查看模型得分  
print(knn.score(X_test,y_test))
# 0.9555555555555556

加入交叉验证

注意因为代码是在jupyter中运行,所以变量我就不重新定义了。
cross_val_score详细介绍放在文章末尾。

from sklearn.model_selection import cross_val_score
#cross_val_score函数一般用到的参数(对照下面):模型 训练数据测试数据 分为几份 计分方式下面的accu为准确的值划分 
sorces=cross_val_score(knn,iris_X,iris_y,cv=5,scoring='accuracy')
print(sorces)
#[0.96666667 1.         0.93333333 0.96666667 1.        ]
print(sorces.mean())  #求得分均值
#0.9733333333333334

加上网格搜索

不知道这里写的对不对

import matplotlib.pyplot as plt
k_range=range(1,31)
k_sorces=[]for k in k_range:knn=L=KNeighborsClassifier(n_neighbors=k)sorces=cross_val_score(knn,iris_X,iris_y,cv=10,scoring='accuracy')k_sorces.append(sorces.mean())
#下面两行是因为横纵坐标会因为汉字报错
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False plt.plot(k_range,k_sorces)
plt.xlabel('对应k值')
plt.ylabel('k值对应分数')
plt.show()

结果为
alt

GridSearchCV

这个其实就是交叉验证和网格搜索的结合,直接得出最优的参数。GridSearchCV的函数信息放在文章末尾(只写了几个常用的参数)

from sklearn.model_selection import GridSearchCV
k_range=range(1,31)
params = {'n_neighbors':k_range}
grid_search = GridSearchCV(knn,params,cv=10,scoring='accuracy')
grid_search.fit(X_train, y_train)
print('模型最高分:{:.3f}'.format(grid_search.score(X_test, y_test)))
print('最优参数:{}'.format(grid_search.best_params_))
#模型最高分:0.956
#最优参数:{'n_neighbors': 5}

函数介绍

GridSearchCV

class sklearn.model_selection.GridSearchCV(estimator, param_grid, , scoring=None, n_jobs=None, refit=True, cv=None, verbose=0, pre_dispatch='2n_jobs’, error_score=nan, return_train_score=False)

参数解释
estimator定义好的模型或者分类器
param_grid需要最优化的参数的取值,值为字典或者列表
scoring模型评价标准
n_jobs并行数,默认为1,最多就是你的cpu核数
cv交叉验证参数,默认None,上文我用的就是常说的10倍交叉验证

cross_val_score

sklearn.model_selection.cross_val_score(estimator, X, y=None, , groups=None, scoring=None, cv=None, n_jobs=None, verbose=0, fit_params=None, pre_dispatch='2n_jobs’, error_score=nan)

参数解释
estimator估计器,也就是模型
X, y数据源 数据,标签值
scoring调用的方法
n_jobs同时工作的cpu个数(-1代表全部)
cv交叉验证生成器或可迭代的次数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_255741.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

卸载Node.js

0 写在前面 无论您是因为什么原因要卸载Node.js都必须要卸载干净。 请阅读: 1 卸载步骤 1.1通过控制面板卸载node.js winR—>control.exe—>卸载程序—>卸载Node.js 等待—>卸载成功 1.2 删除安装时的nodejs文件夹 通过记忆或者Everthing搜索找…

「自控元件及线路」14 电子电力技术与功率放大器概述

本节介绍电子电力技术的基本概念 本节介绍PD、SCR、GTR、MOSFET、IGBT等电子电力器件 本节介绍功率放大器的基本概念和线性功率放大器 文章目录电力电子技术概述电能变换电子电力器件功率二极管PD晶闸管SCR功率晶体管GTR功率场效应晶体管PowerMOSFET绝缘栅双极晶体管IGBT功率放…

使用 ThreeJS 实现第一个三维场景(详)

文章目录参考描述index.html三维场景的基本实现导入 ThreeJS准备工作场景摄像机视锥体正交摄像机透视摄像机渲染器后续处理将摄像机添加至场景中移动摄像机设置画布尺寸将渲染器创建的画布添加到 HTML 元素中渲染物体结构材质合成将物体添加至场景中代码总汇执行效果动画reques…

你的自动化框架如何设计的?为什么感觉面试官总是不满意,到底问题出在哪?

前言去面试自动化测试岗位,尤其是接口自动化岗位,面试官总会问:说下你的自动化框架如何设计的?为什么回答后,面试官对你的框架设计总是感觉不满意?自动化测试实现的几种方式对于不同的公司来说,…

2023年地方两会政府工作报告汇总(各省市23年重点工作)

新年伊始,全国各地两会密集召开,各省、市、自治区2023年政府工作报告相继出炉,各地经济增长预期目标均已明确。相较于2022年,多地经济增长目标放缓,经济不断向“高质量”发展优化转型。今年是二十大后的开局之年&#…

【参加CUDA线上训练营】零基础cuda,一文认识cuda基本概念

【参加CUDA线上训练营】零基础cuda,一文认识cuda基本概念1.术语2.线程层次2.1 Block、Warp与Thread之间的关系2.2 Thread index1.术语 \\%序号名称描述1HostCPU和内存(host memory)2DeviceGPU和显存(device memory)3SMStreaming M…

101-并发编程详解(上篇)

并发编程详解在学习之前,如果多线程的理解足够,可以往下学习,否则的话,建议先看看26章博客(只是建议),注意:可能有些字的字体不对,那么一般是复制粘贴来的,但…

开关电源-一种方便快捷计算开关电源环路参数的方法及实例

一种方便快捷计算开关电源环路参数的方法及实例 接上文《技术实例 | 开关电源环路测量时,注入信号的幅值对测量结果的影响》,得到电流环功率级的开环传递函数后,我们通过matlab的sisotool工具箱自动计算出了电流环路补偿器的传递函数C&#…

三层交换机【实验】

目录 1、要求: 2、拓扑: 3、创建vlan和端口定义并划入vlan: 4、创建以太网中继Eth-Trunk使sw1和sw2的相互冗余并且不浪费链路: 5、使用mstp定义组和对应的根: 6、配置网关冗余: 7、核心层的路由的IP配…

云仓仓储的运行模式是什么?

仓库能够简单地定义为一个规划空间,通常是一个用于处置和贮存货物的大型商业建筑。因而,仓储是指在这样一个规划空间中存储和处置货物所触及的一切过程。仓库中常见的货物包括:;机械零配件、建筑资料、废品农产品、家具和电子产品。仓库中的一…

Fluid-数据缓存亲和性调度原理解析

前言在Fluid中,Dataset资源对象中所定义的远程文件是可被调度的,这意味着你能够像管理你的Pod一样管理远程文件缓存在Kubernetes集群上的存放位置。另外,Fluid同样支持对于应用的数据缓存亲和性调度,这种调度方式将应用(e.g. 数据…

二进制部署K8S集群

目录 一、架构图 二、部署步骤 1、实验环境 2、操作系统初始化配置 3、部署 docker引擎 4、部署 etcd 集群 5、部署 Master 组件 一、架构图 二、部署步骤 1、实验环境 服务器类型IP地址master192.168.80.5node01192.168.80.8node02192.168.80.9 2、操作系统初始化配置…

SpringBoot整合Mybatis的核心原理

0. 前言:1. 自动配置类MybatisAutoConfiguration:1.1. SqlSessionFactory的生成:1.2. Mapper的扫描和代理生成:1.2.1. MapperScannerConfigurer1.2.2. MapperFactoryBean1.2.3. getMapper生成代理对象2. 小结:0. 前言&…

3D模型深度生成网络【ShapeAssembly】

推荐:使用 NSDT场景设计器 快速搭建 3D场景。 我们提出了一个深度生成模型,该模型学习在ShapeAssembly中编写新颖的程序,ShapeAssembly是一种用于建模3D形状结构的特定领域语言。 执行 ShapeAssembly 程序会生成一个由部件代理长方体的分层连…

2023,考个软考中级证书稳妥深圳入户,5月考试8月办入户

最新消息!最新消息!最新消息! 2023年2月8日,深圳市发展和改革委员会深圳市公安局深圳市人力资源和社会保障局关于印发《深圳市积分入户办法》的最新通知↓ 来源《深圳市发展和改革委员会》 该积分入户将于2023年2月15日正式实施&…

Prometheus监控Java-JMX

一、什么是 JMX Exporter ? JMX Exporter 利用 Java 的 JMX 机制来读取 JVM 运行时的一些监控数据,然后将其转换为 Prometheus 所认知的 metrics 格式,以便让 Prometheus 对其进行监控采集。 那么,JMX 又是什么呢?它的全称是&a…

ChatGPT 支持的搜索引擎 Bing 究竟什么样?

微软于2月8日北京时间凌晨在 Redmond 线下举办一场媒体活动,围绕微软的产品以及 AI,公布最新消息。这里我们先回顾一下微软在 AI 上的布局。 2019年,微软向 OpenAI 投资10亿美元,成为了 OpenAI 紧密的合作伙伴,而微软…

Java中动态调用setter以及getter

0x00 前言 对于非专业程序员的安全人员来说,因为没有代码项目的积累,很多知识体系都不完善,所以有必要在一些常用的内容进行学习的总结。 在很多的调用链中都会用到**“动态调用setter以及getter”**这个知识点,比如经典的CB链&a…

Python语言零基础入门教程(九)

Python pass 语句 Python pass 是空语句,是为了保持程序结构的完整性。 pass 不做任何事情,一般用做占位语句。 Python 语言 pass 语句语法格式如下: pass测试实例: #!/usr/bin/python # -*- coding: UTF-8 -*- # 输出 Pytho…

线程池小结

什么是线程池 线程池其实就是一种多线程处理形式,处理过程中可以将任务添加到队列中,然后在创建线程后自动启动这些任务。这里的线程就是我们前面学过的线程,这里的任务就是我们前面学过的实现了Runnable或Callable接口的实例对象; 为什么使用线程池 …