当前位置: 首页 > news >正文

交叉验证python代码_python机器学习,交叉验证

这是个正常的knn训练

from sklearn.datasets import load_iris

from sklearn.cross_validation import train_test_split

from sklearn.neighbors import KNeighborsClassifier

iris = load_iris()

X = iris.data

y = iris.target

X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=4)

knn = KNeighborsClassifier(n_neighbors=5)

knn.fit(X_train,y_train)

y_pred = knn.predict(X_test)

print(knn.score(X_test,y_test))

结果:

0.973684210526以上的代码意思是加载一个数据集,然后用train_test_split方法进行随机划分训练集和测试集

然后用knn算法进行训练得出模型的得分

以上方法有一个不足之处就是没有充分利用数据集,而且模型的效果根样本的划分有很大的关系,因此模型的好坏带了随机性.

交叉验证概述

将原始数据分成K组(一般是均分),将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集,这样会得到K个模型,用这K个模型最终的验证集的分类准确率的平均数作为此K-CV下分类器的性能指标.K一般大于等于2,实际操作时一般从3开始取,只有在原始数据集合数据量小的时候才会尝试取2. 而K-CV 的实验共需要建立 k 个models,并计算 k 次 test sets 的平均辨识率。在实作上,k 要够大才能使各回合中的 训练样本数够多,一般而言 k=10 (作为一个经验参数)算是相当足够了。

改进上面的代码

from sklearn.datasets import load_iris

from sklearn.cross_validation import train_test_split

from sklearn.neighbors import KNeighborsClassifier

iris = load_iris()

X = iris.data

y = iris.target

from sklearn.cross_validation import cross_val_score

knn = KNeighborsClassifier(n_neighbors=5)

#会随机的分成5份训练集和测试集

scores = cross_val_score(knn,X,y,cv=5,scoring='accuracy')

print(scores)

print(scores.mean())

几组训练集的训练得分结果

[ 0.96666667 , 1. , 0.93333333 , 0.96666667 , 1. ]

用一个平均得分来衡量

0.973333333333

利用cross_val_score调整参数

在上面的例子中用knn模型来训练数据,模型中n_neighbors的参数我们写了n_neighbors=5,但是事实上我们不知道等于5是不是最好的选择,在这种情况下面我们可以用for循环结合交叉验证cross_val_score,选择最好的参数方法,如下面代码

from sklearn.cross_validation import cross_val_score

import matplotlib.pyplot as plt

from sklearn.datasets import load_iris

from sklearn.cross_validation import train_test_split

from sklearn.neighbors import KNeighborsClassifier

iris = load_iris()

X = iris.data

y = iris.target

k_range = range(1,31)

k_scorews = []

for k in k_range:

knn = KNeighborsClassifier(n_neighbors=k)

scores = cross_val_score(knn,X,y,cv=10,scoring='accuracy')

loss = -cross_val_score(knn,X,y,cv=10,scoring='mean_squared_error')

k_scorews.append(scores.mean())

plt.plot(k_range,k_scorews)

plt.xlabel('Value of K for KNN')

plt.ylabel('Cross-Validated Accuracy')

plt.show()

结果如下

可以看出n_neighbors在13到20的区间得分是最高的,因此我们可以调整参数为

KNeighborsClassifier(n_neighbors=13)

相关文章:

  • onvif摄像头软件_海康POE录像机添加POE网络摄像头
  • python给两个列表排序方法_对python实现合并两个排序链表的方法详解
  • python opencv压缩图片_OpenCV Python 缩放图片
  • mac cad石材填充图案_这些石材装饰细节处理,你做到位了吗?
  • python逻辑_python逻辑题
  • python语言求素数_用python判断一个数是否是素数的方法
  • 统计高于平均分的人数python_python3 下载 以及 练习1
  • cv::imread导致段错误_OGG启动报错:不能创建共享内存段
  • opengl场景代码_实战篇使用Native OpenGL渲染Unity场景
  • python中dtype是object是什么意思_python – Pandas:将dtype’object’转换为int
  • 人脸比对软件_开源推荐 | 可实现门禁、AI测温敏捷开发的人脸识别应用套件
  • coursera python证书_IBM数据科学证书 | 你想要的一站式新手入门课!
  • 前后端分离项目如何部署_利用dockercompsoe部署前后端分离的项目
  • python天气图形化显示_python可视化爬虫界面之天气查询
  • 电脑控制iphone_iPhone屏幕镜像怎么用?
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • javascript 哈希表
  • JS变量作用域
  • mysql_config not found
  • node学习系列之简单文件上传
  • react-native 安卓真机环境搭建
  • SpriteKit 技巧之添加背景图片
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 通过git安装npm私有模块
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 最近的计划
  • 从如何停掉 Promise 链说起
  • ​低代码平台的核心价值与优势
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • # centos7下FFmpeg环境部署记录
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (SpringBoot)第七章:SpringBoot日志文件
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (转)编辑寄语:因为爱心,所以美丽
  • (转载)Google Chrome调试JS
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .net2005怎么读string形的xml,不是xml文件。
  • .netcore 获取appsettings
  • .net中应用SQL缓存(实例使用)
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • [AutoSar]工程中的cpuload陷阱(三)测试
  • [BT]BUUCTF刷题第9天(3.27)
  • [element-ui] el-dialog 中的内容没有预先加载,因此无法获得内部元素的ref 的解决方案
  • [hdu 3652] B-number
  • [HeadFrist-HTMLCSS学习笔记][第一章Web语言:开始了解HTML]
  • [MFC] VS2013版本MFC工程移植到VC6.0上
  • [NBIoT]NBIoT相关知识
  • [PY3]——logging