以KNN为例用sklearn进行数据分析和预测
准备
相关的库
相关的库包括:
- numpy
- pandas
- sklearn
带入代码如下:
import pandas as pd
import numpy as np
from sklearn.neighbors import KNeighborsClassfier as KNN
数据准备
数据是sklearn的乳腺癌数据。
from skleanr.datasets import load_breast_cancer
data=load_breast_caner()
data主要分为两部分:data
和target
,把这两部分,设置变量导入DataFrame
中可查看基本形状。
X = data.data
y = data.target
sklearn
的数据其形式比较固定,data
的主要属性有:
data
。数据,即变量的值,多行多列target
。目标,即因变量的值,一般是一行DESCR
。描述,可打印出,描述变量、目标features_names
。X的列名target_names
。Y的列名filename
。数据文件所在位置(一般在\lib\site-packages\sklearn\datasets\data\
目录下)
分数据集和测试集:
from sklearn.model_selection import train_test_split
Xtrain,Xtest,Ytrain,Ytest=train_test_split(X, y, test_size=0.3)
注意:
- 0.3是指30%数据作为测试。每次运行不同,可通过
random_state
控制 - 返回的结果固定,不可错
建立模型
clf = KNN(n_neighbors = 5)
clf=clf.fit(Xtrain,Ytrain)
clf就是训练好的模型,可调用接口查看进行预测和评分。常用是predict
、score
和kneighbors
。三者分别用来预测、评分、求最近邻。
在选择训练集和测试集的时候,可能会存在以下问题。
- 选择测试集和训练集每次都是不同的,因此每次模型的效果都不同。
- 选择测试集和训练集有时会极大影响模型。——特别是当数据是有顺序的时候。
因此需要交叉验证,找到最好的参数,再次训练模型。
K折交叉验证
K折交叉验证的方法:
cvresult=CVS(clf,X,y,cv=5)
CVS的第一个参数是训练过的模型,参数cv是折数。
cvresult.mean() # 取得均值
cvresult.var() #取得方差
可利用方差,绘制出学习曲线:
score =[]
var_=[]
krange=range(1,21)
for i in krange:clf=KNN(n_neighbors=i)cvresult=CVS(clf,X,y,cv=5)score.append(cvresult.mean())var_.append(cvresult.var())
plt.plot(krange,score,color='k')
plt.plot(krange,np.array(score)+np.array(var_)*2,c='red',linestyle='--')
plt.plot(krange,np.array(score)-np.array(var_)*2,c='red',linestyle='--')
bestindex=score.index(max(score))
print(bestindex+1)
print(score[bestindex])
常用交叉验证
- K折。特别在回归模型,若数据有顺序,结果会很糟糕
- stratifiedKfold。常用
- shuffleSplit。常用
- GroupKFold。
但是如果把数据分为:训练数据、测试数据。训练数据又分出来一部分验证数据,那么真正用于训练的数据就更小了。
归一化
KNN是距离类的模型,因此需要归一化。也就是把数据减去最差值,处以极差:
\[ x^*=\frac{x-min(x)}{max(x)-min(x)} \]
归一化要分训练集和测试集之后。(因为归一化时候用到的极值,很可能就是测试集的数据,这样事先就把数据透露给模型了)
Xtrain,Xtest,Ytrain,Ytest=train_test_split(X_,y,test_size=0.3,random_state=420)
MMS=nms().fit(Xtrain) #MMS中,有Xtrain的min,和极差
Xtest_=MMS.transform(Xtest)
Xtrain_=MMS.transform(Xtrain) #分别对训练集、测试集进行归一化
这样再运行学习曲线的代码,得到的结果就要好一些:
转载于:https://www.cnblogs.com/heenhui2016/p/10986745.html
以KNN为例用sklearn进行数据分析和预测相关推荐
- KNN算法——kd-tree、KNN莺尾花分类sklearn实现实例
KNN算法--kd-tree.KNN莺尾花分类sklearn实现实例 KNN算法--kd-tree.KNN莺尾花分类sklearn实现实例 1.kd-tree 2.kd-tree的构建 3.kd-tr ...
- 大数据-11-案例演习-淘宝双11数据分析与预测
主要摘自 http://dblab.xmu.edu.cn/post/8116/ 案例简介 Spark课程实验案例:淘宝双11数据分析与预测课程案例,由厦门大学数据库实验室团队开发,旨在满足全国高校大数 ...
- 利用R语言对泰坦尼克号沉没事件幸存者的数据分析与预测
题外话:在文章正式开始之前,我还是想先写一点题外话,一是为了引出写作这篇博客的目的,二则是希望能够记录下现在的所思所想为以后留个纪念.首先介绍一下自己,毕业3年多的小硕一枚,大学期间学的专业是高分子材 ...
- 【Python】时间序列数据分析与预测之Python工具汇总
本文中总结了十多种时间序列数据分析和预测工具和python库,在我们处理时间序列项目时,可以翻开本文,根据需要选择合适的工具,将会事半功倍! 在处理时间序列项目时,数据科学家或 ML 工程师通常会使用 ...
- 电商销售数据分析与预测(日期数据统计、按天统计、按月统计)
本文来自<Python数据分析从入门到精通>--明日科技编著 随着电商行业的激烈竞争,电商平台推出了各种数字营销方案,付费广告也是花样繁多.那么电商投入广告后,究竟能给企业增加多少收益,对 ...
- python空气质量分析与预测_干货!如何用 Python+KNN 算法实现城市空气质量分析与预测?...
原标题:干货!如何用 Python+KNN 算法实现城市空气质量分析与预测? 作者 | 李秋键 责编 | 伍杏玲 封图 | CSDN 付费下载自东方 IC 出品 | CSDN(ID:CSDNnews) ...
- 时间序列数据分析与预测之Python工具汇总
大家好,我是辰哥 本文中硬核总结了十多种时间序列数据分析和预测工具和python库,在我们处理时间序列项目时,可以翻开本文,根据需要选择合适的工具,将会事半功倍! 在处理时间序列项目时, ...
- 铁路轨道不平顺数据分析与预测
铁路轨道不平顺数据分析与预测 1.引言 铁路轨道作为铁行车的基础设施,是铁路线路的重要组成部分.随着经济和交通运输业的发展,我国的铁路运输正朝着高速和重载方向迅速发展,与此同时,轨道结构承受来自列车荷 ...
- 电商数据分析--薪资预测(线性回归)
电商数据分析–薪资预测(线性回归) 数据分析流程: 明确目的 获取数据 数据探索和预处理 分析数据 得出结论 验证结论 结果展现 线性回归:线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间 ...
最新文章
- 从理论到实践 全面理解HTTP/2
- GlusterFS下如何修复裂脑文件?(续一)
- 二分图专题系列各大知识点总结(匈牙利,染色法,最大独立集,最小点覆盖,最小路径覆盖)
- jvm中有哪些内存区域会发生内存溢出
- tensorflow 制定 CPU 或GPU
- PHP网站开启gzip压缩,php中开启gzip压缩的2种方法代码
- 【C++深度剖析教程22】继承的概念和意义
- 相邻位数字差值的绝对值不能超过_热点争议中技术问题,伺服控制有几个零点?对应真绝对值多圈编码器意义...
- 并行算法设计与性能优化总结
- 第二次结对编程作业——毕业导师智能匹配
- 2021-08-10 idea 事务的操作
- 嵊州D1T1 总统先生,一路走好!
- 小松鼠短视频完美开源源码
- 【学习笔记】Servlet容器(Web容器)简介
- c语言建立文件的时候会飞动,C语言:简单而不易懂的声明(二)
- 三星android 安卓版本怎么升级包,三星A70官方安卓9固件系统线刷升级更新包:BRI-A7050ZHU3ASJ1...
- 各种透明玻璃厚度测量双边对射厚度测量精密测量厂家
- Mac Pro 开不了机
- 2021 AAAI Fellow名单重磅出炉!华人学者遗憾连续两年无缘入选
- 使用 ESP32 设计智能手表第 3 部分 - 磁力计和陀螺仪