文章目录

  • 一、前言
  • 二、基本概念
  • 三、代码实现
    • 1. 问题简介
    • 2.导入数据
    • 3.将数据集分成训练集和测试集
    • 4.K-邻近算法模型
    • 5.结果预测
    • 6.模型评分

一、前言

  • 语言环境:Python3.6.5
  • 编译器:jupyter notebook
  • 代码|数据:微信公众号(K同学啊)中回复:第8天

二、基本概念

商业哲学家 Jim Rohn 说过一句话,“你,就是你最常接触的五个人的平均。”那么,在分析一个人时,我们不妨观察和他最亲密的几个人。同理的,在判定一个未知事物时,可以观察离它最近的几个样本,这就是KNN(k最近邻)的方法。

K-近邻算法是一种基本分类和回归方法

K-近邻算法,即是给定一个训练数据集,输入一个新的实例,在训练数据集中找到与该实例最邻近的K个实例,这K个实例主要是哪一类别,那么就把该实例分类到这个类中。引用维基百科上的一幅图:

蓝色方块与红色三角形为训练集中的实例,绿色小圆是新输入的实例,现在在现有实例中取K个离小绿圆最近实例用于判断其类别。

  • 当K=3时,所取实例在实线圆内,红三角占比最大,将新输入实例归为红三角一类。
  • 当K=5时,所取实例在虚线圆内,绿方块占比最大,将新输入实例归为绿方块一类。

在KNN中存在两个重要问题,一个是K的取值问题,一个是距离计算问题,这里先不做讨论,仅仅引入KNN这个概念,明白它是一个什么东西,在后面文章中我们再对这两个问题进行深入讨论。下文将通过sklearn包来实现KNN。

三、代码实现

1. 问题简介

背景: 海伦一直使用在线约会网站寻找适合自己的约会对象。尽管约会网站会推荐不同的人选,但她没有从中找到喜欢的人。经过一番总结,她发现曾交往过三种类型的人:

  • ①不喜欢的人;
  • ②魅力一般的人;
  • ③极具魅力的人。

她现在总结好的数据中(即训练集)包含三种特征:

  • ①每年获得的飞行常客里程数
  • ②玩视频游戏所耗时间百分比
  • ③每周消费的冰淇淋公升数

她希望根据现有的数据来判断一个陌生男人会被她归到哪一类。

2.导入数据

import pandas as pd
data=pd.read_table('../data/datingTestSet2.txt',sep='\t',header=None)
data.head()
"""
0:每年获得的飞行常客里程数
1:玩视频游戏所耗时间百分比
2:每周消费的冰淇淋公升数
3:人物类别(不喜欢的人、魅力一般的人、极具魅力的人)
输出:0         1           2       3
0   40920   8.326976    0.953952    3
1   14488   7.153469    1.673904    2
2   26052   1.441871    0.805124    1
3   75136   13.147394   0.428964    1
4   38344   1.669788    0.134296    1
"""
X = data.iloc[:,:3]
y = data.iloc[:,3]

3.将数据集分成训练集和测试集

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=3)

4.K-邻近算法模型

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

5.结果预测

data["预测结果"] = knc.predict(data.iloc[:,:3])
data.head(10)
"""
输出:0         1           2       3   预测结果
0   40920   8.326976    0.953952    3      3
1   14488   7.153469    1.673904    2      2
2   26052   1.441871    0.805124    1      3
3   75136   13.147394   0.428964    1      1
4   38344   1.669788    0.134296    1      3
5   72993   10.141740   1.032955    1      1
6   35948   6.830792    1.213192    3      3
7   42666   13.276369   0.543880    3      3
8   67497   8.631577    0.749278    1      1
9   35483   12.273169   1.508053    3      3
"""

6.模型评分

knc.score(X_test,y_test)
"""
输出:0.796
"""

参考文章:
1.https://zhuanlan.zhihu.com/p/25994179
2.维基百科
3.https://www.joinquant.com/view/community/detail/a98b7021e7391c62f6369207242700b2

机器学习第9天:K-邻近算法模型(KNN)相关推荐

  1. 机器学习3—分类算法之K邻近算法(KNN)

    K邻近算法(KNN) 一.算法思想 二.KNN类KNeighborsClassifier的使用 三.KNN分析红酒类型 3.1红酒数据集 3.2红酒数据的读取 3.3将红酒的数据集拆分为训练和测试集 ...

  2. 机器学习实战读书笔记--k邻近算法KNN

    k邻近算法的伪代码: 对未知类别属性的数据集中的每个点一次执行以下操作: (1)计算已知类别数据集中的点与当前点之间的距离: (2)按照距离递增次序排列 (3)选取与当前点距离最小的k个点 (4)确定 ...

  3. K邻近算法(K-NN)

    简单记录学习<统计学习方法>书中的k近邻模型. k近邻法(k-nearest neighbor,k-NN)是一种基本分类与回归方法. k邻近算法 k邻近算犯法简单.直观描述:给定一个训练数 ...

  4. 独家 | R语言中K邻近算法的初学者指南:从菜鸟到大神(附代码&链接)

    作者:Leihua Ye, UC Santa Barbara 翻译:陈超 校对:冯羽 本文约2300字,建议阅读10分钟 本文介绍了一种针对初学者的K临近算法在R语言中的实现方法. 本文呈现了一种在R ...

  5. k邻近算法(KNN)实例

    一 k近邻算法原理 k近邻算法是一种基本分类和回归方法. 原理:K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例,这K个实例的多数属于某个类,就把该输入实 ...

  6. 机器学习:k邻近算法(KNN)

    title: 机器学习:k邻近算法(KNN) date: 2019-11-16 20:20:41 mathjax: true categories: 机器学习 tags: 机器学习 什么是K邻近算法? ...

  7. 刻意练习:机器学习实战 -- Task01. K邻近算法

    背景 这是我们为拥有 Python 基础的同学推出的精进技能的"机器学习实战" 刻意练习活动,这也是我们本学期推出的第三次活动了. 我们准备利用8周时间,夯实机器学习常用算法,完成 ...

  8. 《机器学习实战》K邻近算法

    K邻近算法 存在一个样本数据集合,样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系.输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样 ...

  9. k折交叉验证优缺点_R语言中K邻近算法的初学者指南:从菜鸟到大神(附代码&链接)...

    作者:Leihua Ye, UC Santa Barbara 翻译:陈超 校对:冯羽 本文约2300字,建议阅读10分钟 本文介绍了一种针对初学者的K临近算法在R语言中的实现方法. 本文呈现了一种在R ...

  10. k邻近算法-回归实操

    python k相邻近算法之回归实操 基本概念 先简单介绍一下机器学习里面的两个概念 1.分类与回归 分类模型和回归模型本质一样,分类模型是将回归模型的输出离散化. 一般来说,回归问题通常是用来预测一 ...

最新文章

  1. SAP QM MB56 报表没有结果之分析与对策
  2. 原生js设置div隐藏或者显示_JS实现“隐藏与显示”功能(多种方法)
  3. 鼠标滑过某一个图标时,提示讯息
  4. 如何聚焦自己的研究方向?一个实例研究
  5. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1081:分苹果
  6. python用matplotlib画球_python 如何用matplotlib画一个漂亮的圆-百度经验
  7. 《转》ReentrantLock实现原理深入探究
  8. 飞翔的圆(Flappy Bird)游戏源码完整版
  9. 解决win7和ubuntu双系统ubuntu不能上网的问题
  10. 计算机游戏有哪几种,这些游戏你玩过几个? 你认为最经典的电脑游戏有哪些?
  11. 黑客入侵3个月浑然不知,或影响3万家客户!这个软件测试公司心太大了!
  12. 决策树算法python源代码_CART决策树(Decision Tree)的Python源码实现
  13. 怎样用计算机合并视频,电脑视频合并软件 , 怎样把多个视频合成为一个
  14. 2022-2028全球独立水疗浴缸行业调研及趋势分析报告
  15. 电阻电路的等效变化(Ⅰ)
  16. 登录失败:用户帐户限制。可能的原因包括不允许空密码,登录时间限制,或强制的策略限制。 ...
  17. 省钱版----查找 IoT 设备TTL线序__未完待续
  18. EDA元器件封装导入allegro
  19. 工地安全帽反光衣识别系统 yolov5
  20. 【Java基础1】Java开发工具包JDK

热门文章

  1. W600 PWM捕获功能
  2. python绘图subplot绘制5幅图:以2行绘制,首行3幅图,次行2幅图居中(内含绘制3幅图简单版)
  3. c++美发店管理系统设计_美发店如何打造会员管理系统?掌柜智囊—收银机必不可少...
  4. js截屏 video_js获取video任意时间的画面截图
  5. 通过命令行形式编译QT源程序
  6. 学会python怎么赚钱 贴吧_我月薪5000,靠Python搞副业月入3万
  7. 什么是用户对计算机进行配置的重要工具,《计算机常用工具软件》试题1
  8. matlab计算电路环流,双反星形整流电路并联运行环流分析
  9. linux文件的操作原理简介 以及 实现linux cp命令的代码
  10. 小型邮件服务器,windows 2003 server小型邮件服务器架设