(案例):用sklearn包实现knn分类小案例,通过交叉验证网格搜索获取最优参数模型,进行参数评估。
导包:
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split,GridSearchCV
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import f1_score,precision_score,recall_score,roc_auc_score,roc_curve
import matplotlib.pyplot as plt
import matplotlib as mpl
设置字符集,防止中文乱码
mpl.rcParams[‘font.sans-serif’]=[u’simHei’]
mpl.rcParams[‘axes.unicode_minus’]=False

获取数据:
1.导入乳腺癌数据
data_breast_cancer=load_breast_cancer()
2.获取特征值数据
X=data_breast_cancer.data
3.获取目标值数据
y=data_breast_cancer.target
4.分割数据集,训练集和测试集
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=122)

数据处理:
1.方差均值归一
std=StandardScaler()
2.训练训练集,获取方差和均值
std.fit(X_train)
3.将训练集和测试集归一
X_train_std=std.transform(X_train)
X_test_std=std.transform(X_test)

最优参数获取:
1.参数字典,选择超参
parameters={
‘n_neighbors’:[i for i in range(3,10)], #k值选择
‘weights’:[‘distance’,‘uniform’], #权重计算方式
‘p’:[i for i in range(1,6)] #选择计算公式
}

2.实例化分类器
knn=KNeighborsClassifier()

3.实例化网格搜索交叉验证:3重交叉验证
gc=GridSearchCV(knn,param_grid=parameters,cv=3,n_jobs=1)

训练数据建模:
gc.fit(X_train_std,y_train)

模型评估:
1.最优模型
mod=gc.best_estimator_
print(‘最优模型:’,mod)
2.最优参数
best_param=gc.best_params_
print(‘最优参数:’,best_param)
3.最优得分
best_sco=gc.best_score_
print(‘最优得分:’,best_sco)
4.预测–测试结果准确性
predict=gc.score(X_test_std,y_test)
print(‘本次结果预测准确率为:’,predict)
5.对测试集的预测值
res=gc.predict(X_test_std)
6.预测–测试结果精确率
per=precision_score(y_test,res)
print(‘预测–测试结果精确率:’,per)
7.预测–测试结果召回率
rec=recall_score(y_test,res)
print(‘预测–测试结果召回率:’,rec)
8.预测–测试结果f1score
f1=f1_score(y_test,res)
print(‘预测–测试结果f1_score:’,f1)
9.预测–测试结果auc
auc=roc_auc_score(y_test,res)
print(‘预测–测试结果AUC:’,auc)
10测试集结果和真实值对比
for i in range(len(y_test)):
#预测并打印真实值和测试值对比
p=gc.predict(X_test_std[i].reshape(1,-1))
print(‘第%s次测试的真实值是:%s,预测值是:%s’%(i+1,y_test[i],p))

数据可视化: roc曲线绘制
p_pro=gc.predict_proba(X_test_std)[:,1]
fprs,tprs,t=roc_curve(y_test,p_pro)
plt.plot(fprs,tprs,‘g’,lw=2,label=‘AUC值:%.3f’%auc)
plt.plot([0,1],[0,1],‘r’,lw=2)
plt.title(‘knn算法预测乳腺癌的ROC曲线’)
plt.legend(loc=‘upper right’)
plt.grid(b=True)
plt.savefig(’./breast_canner_pre.jpg’)
plt.show()

ROC曲线可视化:

结果展示:
最优模型: KNeighborsClassifier(algorithm=‘auto’, leaf_size=30, metric=‘minkowski’,
metric_params=None, n_jobs=None, n_neighbors=3, p=1,
weights=‘distance’)
最优参数: {‘n_neighbors’: 3, ‘p’: 1, ‘weights’: ‘distance’}
最优得分: 0.9698492462311558
本次结果预测准确率为: 0.9766081871345029
预测–测试结果精确率: 0.9821428571428571
预测–测试结果召回率: 0.9821428571428571
预测–测试结果f1_score: 0.9821428571428571
预测–测试结果AUC: 0.9741222760290558
第1次测试的真实值是:1,预测值是:[1]
第2次测试的真实值是:1,预测值是:[1]
第3次测试的真实值是:1,预测值是:[1]
第4次测试的真实值是:0,预测值是:[0]
第5次测试的真实值是:1,预测值是:[1]
第6次测试的真实值是:1,预测值是:[1]
第7次测试的真实值是:1,预测值是:[1]
第8次测试的真实值是:0,预测值是:[0]
第9次测试的真实值是:1,预测值是:[1]
第10次测试的真实值是:1,预测值是:[1]

机器学习之sklearn-KNN近邻算法分类小案例(乳腺癌预测最优模型)相关推荐

  1. 01. 机器学习笔记01——K近邻算法 , CV_example

    K近邻算法(K-nearest neighbor,KNN算法) 李航博士<统计学习方法> 最近邻(k-Nearest Neighbors,KNN)算法是一种分类算法 应用场景:字符识别.文 ...

  2. 使用kNN近邻算法识别水果种类(python学习笔记)

    1. 查看数据集,了解大概信息 import pandas as pd fruits_df = pd.read_table('fruit_data_width_colors.txt') print(f ...

  3. (机器学习)——使用KNN进行水果分类

    (机器学习)--使用KNN进行水果分类(详解) 实验目标是:导入素材文件fruit_data.txt,使用SKlearn中的neighbors模块对水果数据进行分类,然后预测A.B两种水果的类别.以下 ...

  4. ML之ME/LF:基于不同机器学习框架(sklearn/TF)下算法的模型评估指标(损失函数)代码实现及其函数(Scoring/metrics)代码实现(仅代码)

    ML之ME/LF:基于不同机器学习框架(sklearn/TF)下算法的模型评估指标(损失函数)代码实现及其函数(Scoring/metrics)代码实现(仅代码) 目录 单个评价指标各种框架下实现 1 ...

  5. ML之MaL: 流形学习MaL的概念认知、算法分类、案例应用、代码实现之详细攻略

    ML之MaL: 流形学习MaL的概念认知.算法分类.案例应用.代码实现之详细攻略 目录 MaL的概念认知 MaL的算法分类 MaL的案例应用 MaL的代码实现 MaL的概念认知 流形学习,全称流形学习 ...

  6. KNN回归算法【配有案例演示】

    KNN回归算法 KNN回归算法就是给定数据集与结果,预测后面新出的数据集的结果.与前面KNN最邻近算法比较类似,最临近算法是求出预测数据集与训练数据集的每个点之间的距离,取前k个数据集的结果集,把结果 ...

  7. 机器学习分类算法(二)-KNN(近邻)算法

    一.简单k-近邻算法 本文将从k-近邻(kNN)算法的思想开始讲起.并且,并会提供相应的数据集.除此之外,也会对sklearn实现k-近邻算法的方法进行讲解. 并配备一定的实战实例 电影类别分类 约会 ...

  8. 机器学习入门KNN近邻算法(一)

    1 机器学习处理流程: 2 机器学习分类: 有监督学习 主要用于决策支持,它利用有标识的历史数据进行训练,以实现对新数据的表示的预测 1 分类 分类计数预测的数据对象是离散的.如短信是否为垃圾短信,用 ...

  9. 2、python机器学习基础教程——K近邻算法鸢尾花分类

    一.第一个K近邻算法应用:鸢尾花分类 import numpy as np from sklearn.datasets import load_iris from sklearn.model_sele ...

最新文章

  1. 全网最简单的dubbo源码调试,建议点赞收藏!!!
  2. oracle 闩机制,Oracle latch闩原理示意图
  3. html链接外部css样式表,CSS外部样式表是什么?
  4. log4net日志插件的使用
  5. 计算机网络实验报告西南科技大学,西南科技大学计算机网络-实验二.docx
  6. 数据结构 之 并查集(Disjoint Set)
  7. php 微信扫码给红包,关于现金红包的详细介绍
  8. 实体框架 6.0:异步、IQueryable操作符和特性改进
  9. 容器技术Docker K8s 9 容器服务ACK应用场景
  10. VCIP2020:基于深度学习合成参考帧
  11. vue验证码图片显示不出来,将图片转换为base64格式显示
  12. 微软苏州招 Android/iOS 开发!
  13. 2017年6月英语 CET 四六级考试查询准考证方法
  14. learning psychology
  15. 从asm磁盘头自动备份看11g到12c的新特性--Physical_metadata_replication
  16. npm ERR! code E404 npm ERR! 404 Not Found - GET
  17. 函数依赖 主码 主属性 非主属性 候选键 超键 详解
  18. 逆势增长背后的启示:亚信科技公布2022中期业绩
  19. 为苹果APP制作在APPLE STORE中的下载用“二维码”
  20. 两件事:李一男、CS游戏

热门文章

  1. bzoj 2959: 长跑(LCT+并查集)
  2. linux下,matplotlib遇到的相关问题以及解决方法
  3. 锐捷 linux无法上网,通过锐捷认证了,为什么还不能上网?
  4. python打印输出世界你好!_Python语句 print(\\\世界,你好”)的输出是?
  5. HDFS删除并清空回收站
  6. C++进阶——内存管理(一)
  7. Java网络爬虫基础概述
  8. Discourse 调整使用不同的表情符号
  9. python隐藏源码,生成pyd文件并调用的完整过程
  10. Dockerhub最新的toomanyrequests问题