一、引言

KNN可用于分类和回归,用于分类时是多分类方法。

注意:由于此方法根据预测点近邻的各类点的个数多少来确定该预测点的类别,因此原始类别数据不均衡,将严重影响最终分类效果。

二、KNN分类思想

如上图所示,有两类不同的样本,分别为蓝色正方形和红色三角形,而绿色的圆代表待分类的数据,所以呢我们就要给绿色的圆分类。

  1. 如果K=3,绿色的圆最近的三个邻居分别是:两个红色的三角形和一个蓝色的正方形那我们就少数服从多数,基于统计的方法,判定绿色的圆属于红色三角形这一类。
  2. 如果K=5,绿色的圆最近的五个邻居分别是:两个红色的三角形和三个蓝色的正方形那我们就少数服从多数,基于统计的方法,判定绿色的圆属于蓝色正方形这一类。

三、 使用KNN完成乳腺癌检测分类

乳腺癌检测分类数据集说明:

乳腺癌检测数据集:数据集共有569个样本,每个样本有30个特征,其中357个阳性,212个阴性

数据集已经在资源中上传。

四、Python代码实现

(1)读入数据集

import numpy as np
import pandas as pd
data1=pd.read_csv('./data_picture/chapter3/breast-cancer.csv')
data1.head()

(2)生成训练集和测试集(我们将label提出来,生成X,Y;75%训练集25%测试集;随机种子数是个数就可以)

X=data1.drop('class',axis=1)
y=data1['class']
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.25,random_state=6)

(3)由于方法用到了距离,而且距离值直接影响到聚类效果,因此在聚类前必须对每一个特征数据进行标准化或归一化处理。

from sklearn.preprocessing import StandardScaler
ss=StandardScaler()
X_train=ss.fit_transform(X_train)
X_test=ss.transform(X_test)

(4)构建KNN模型和预测

from sklearn.neighbors import KNeighborsClassifier
model=KNeighborsClassifier()
model.fit(X_train,y_train)

(5)模型评估

from sklearn.metrics import classification_report
print("训练集的模型评估指标:")
model_score=model.score(X_train,y_train)
print()
print('The accuracy of train data',model_score)
print('--------------------------------------------------------------------------')
y_train_predict=model.predict(X_train)
model_report1=classification_report(y_train,y_train_predict)
print(model_report1)
print('$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$')print("测试集的模型评估指标:")
model_score=model.score(X_test,y_test)
print()
print('The accuracy of test data is',model_score)
print('--------------------------------------------------------------------------')
y_predict=model.predict(X_test)
model_report=classification_report(y_test,y_predict)
print(model_report)
print('--------------------------------------------------------------------------')

结果:

(6)模型保存(方便后面使用)

from sklearn.externals import joblib
joblib.dump(model,'model_knn.pkl')  

(7)模型导入(利用调入的模型对数据进行预测时,要保证待预测数据和模型训练时的数据格式一致,如果训练时数据做了标准化, 则待预测数据必须做相应的标准化。)

model=joblib.load('model_knn.pkl')     #调入模型
y_pred=model.predict(X_test)
model.score(X_test,y_test)

结果:

机器学习——K近邻算法及乳腺癌检测分类相关推荐

  1. 机器学习——K近邻算法(KNN)(K Nearest Neighbor)

    参考视频与文献: python与人工智能-KNN算法实现_哔哩哔哩_bilibili 机器学习--K近邻算法(KNN)及其python实现_清泉_流响的博客-CSDN博客_python实现knn 机器 ...

  2. python机器学习 | K近邻算法学习(1)

    K近邻算法学习 1 K近邻算法介绍 1.1算法定义 1.2算法原理 1.3算法讨论 1.3.1 K值选择 1.3.2距离计算 1.3.3 KD树 2 K近邻算法实现 2.1scikit-learn工具 ...

  3. [机器学习]K近邻算法及其应用--WEKA工具

    K近邻算法理论基础 k近邻模型 距离度量 k值的选择 分类决策规则 WEKA实战 问题背景 数据预处理 得到分类器 对未知的数据进行分类预测 K近邻算法理论基础 (本节内容参考了:李航<统计学习 ...

  4. 2 机器学习 K近邻算法(KNN) 学习曲线 交叉验证 手写数字识别

    机器学习 1 K-近邻算法介绍 1.1 分类问题 分类问题:根据已知样本的某些特征,判断一个未知样本属于哪种样本类别. 与回归问题相比,分类问题的输出结果是离散值,用于指定输入的样本数据属于哪个类别. ...

  5. 机器学习[k近邻算法]

    k近邻算法简称kNN算法,由Thomas等人在1967年提出[1].它基于以下思想:要确定一个样本的类别,可以计算它与所有训练样本的距离,然后找出和该样本最接近的k个样本,统计这些样本的类别进行投票, ...

  6. 【机器学习-K近邻算法】

    K-近邻算法 K-近邻算法的快速入门 K-近邻(KNN)算法概念 殴式距离公式 电影分类案例 K-近邻算法API Scikit-learn工具 Scikit-learn包含内容 K-近邻算法API方法 ...

  7. 机器学习--K近邻算法(KNN)(2)

    一.简介 K-Nearest-Neighbor 算法是一种常用的监督学习算法,它没有显式的训练过程,是'懒惰学习'的显著代表,此类学习算法仅在训练阶段将训练集保存起来,训练时间开销为0,待收到测试样本 ...

  8. 机器学习——K近邻算法(KNN)及其python实现

    参考视频与文献: https://www.bilibili.com/video/BV1HX4y137TN/?spm_id_from=333.788&vd_source=77c874a500ef ...

  9. 【机器学习入门】(1) K近邻算法:原理、实例应用(红酒分类预测)附python完整代码及数据集

    各位同学好,今天我向大家介绍一下python机器学习中的K近邻算法.内容有:K近邻算法的原理解析:实战案例--红酒分类预测.红酒数据集.完整代码在文章最下面. 案例简介:有178个红酒样本,每一款红酒 ...

最新文章

  1. 测绘技术的发展与分类简述
  2. 利用cache特性检测Android模拟器
  3. [Redux/Mobx] redux-saga和redux-thunk有什么本质的区别?
  4. PLSQL连接本地的Oracle数据库
  5. 机载L波段卫星通信-市场现状及未来发展趋势
  6. 服务器虚拟化有什么好处
  7. 数字电视标准大全DVB/ATSC/ISDB/CMMB/DMBTH/DAB
  8. pyqt5——工具栏
  9. 关于fcitx无法切换输入法的问题解决
  10. PYTHON——自然间断点分级法
  11. 小程序webview组件实践
  12. UniAccess Agent 的删除方法
  13. ugui 转轮_【Unity插件】FingerGestures 插件使用
  14. c 语言 清华大学郑莉,c 语言程序设计郑莉清华大学答案
  15. 学完Java后可以应聘哪些工作岗位?
  16. QtCreator使用CMake构建项目时jom Error 2问题
  17. 【STM32F4系列】【HAL库】电机控制(转速和角度)(PID实战1)
  18. 教你2023年计算机毕业设计怎么选题,创新点怎么写
  19. java码农笔记本_Java 码农,准备换一台电脑, MBP 还是 ThinkPad?
  20. 中国天气网全城市代码weather_cityId

热门文章

  1. JS和H5做一个音乐播放器,附带源码
  2. 酒店管理系统/基于ssm的酒店管理系统/基于javaweb的酒店管理系统的设计与实现
  3. ClearCase指南-基础篇(连载一)
  4. LDO(线性稳压器)设计检查
  5. 梦里梦见“劫财骗钱”
  6. andriod R wifi 开启流程
  7. [破解] 爱盘 -- 在线破解工具包
  8. ESP8266-Arduino编程实例-MAG3110磁力计驱动
  9. Vue3通透教程【四】Vue3组合API初体验
  10. [附源码]SSM计算机毕业设计小区物业管理系统JAVA