机器学习第9天:K-邻近算法模型(KNN)
文章目录
- 一、前言
- 二、基本概念
- 三、代码实现
- 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)相关推荐
- 机器学习3—分类算法之K邻近算法(KNN)
K邻近算法(KNN) 一.算法思想 二.KNN类KNeighborsClassifier的使用 三.KNN分析红酒类型 3.1红酒数据集 3.2红酒数据的读取 3.3将红酒的数据集拆分为训练和测试集 ...
- 机器学习实战读书笔记--k邻近算法KNN
k邻近算法的伪代码: 对未知类别属性的数据集中的每个点一次执行以下操作: (1)计算已知类别数据集中的点与当前点之间的距离: (2)按照距离递增次序排列 (3)选取与当前点距离最小的k个点 (4)确定 ...
- K邻近算法(K-NN)
简单记录学习<统计学习方法>书中的k近邻模型. k近邻法(k-nearest neighbor,k-NN)是一种基本分类与回归方法. k邻近算法 k邻近算犯法简单.直观描述:给定一个训练数 ...
- 独家 | R语言中K邻近算法的初学者指南:从菜鸟到大神(附代码&链接)
作者:Leihua Ye, UC Santa Barbara 翻译:陈超 校对:冯羽 本文约2300字,建议阅读10分钟 本文介绍了一种针对初学者的K临近算法在R语言中的实现方法. 本文呈现了一种在R ...
- k邻近算法(KNN)实例
一 k近邻算法原理 k近邻算法是一种基本分类和回归方法. 原理:K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例,这K个实例的多数属于某个类,就把该输入实 ...
- 机器学习:k邻近算法(KNN)
title: 机器学习:k邻近算法(KNN) date: 2019-11-16 20:20:41 mathjax: true categories: 机器学习 tags: 机器学习 什么是K邻近算法? ...
- 刻意练习:机器学习实战 -- Task01. K邻近算法
背景 这是我们为拥有 Python 基础的同学推出的精进技能的"机器学习实战" 刻意练习活动,这也是我们本学期推出的第三次活动了. 我们准备利用8周时间,夯实机器学习常用算法,完成 ...
- 《机器学习实战》K邻近算法
K邻近算法 存在一个样本数据集合,样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系.输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样 ...
- k折交叉验证优缺点_R语言中K邻近算法的初学者指南:从菜鸟到大神(附代码&链接)...
作者:Leihua Ye, UC Santa Barbara 翻译:陈超 校对:冯羽 本文约2300字,建议阅读10分钟 本文介绍了一种针对初学者的K临近算法在R语言中的实现方法. 本文呈现了一种在R ...
- k邻近算法-回归实操
python k相邻近算法之回归实操 基本概念 先简单介绍一下机器学习里面的两个概念 1.分类与回归 分类模型和回归模型本质一样,分类模型是将回归模型的输出离散化. 一般来说,回归问题通常是用来预测一 ...
最新文章
- SAP QM MB56 报表没有结果之分析与对策
- 原生js设置div隐藏或者显示_JS实现“隐藏与显示”功能(多种方法)
- 鼠标滑过某一个图标时,提示讯息
- 如何聚焦自己的研究方向?一个实例研究
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1081:分苹果
- python用matplotlib画球_python 如何用matplotlib画一个漂亮的圆-百度经验
- 《转》ReentrantLock实现原理深入探究
- 飞翔的圆(Flappy Bird)游戏源码完整版
- 解决win7和ubuntu双系统ubuntu不能上网的问题
- 计算机游戏有哪几种,这些游戏你玩过几个? 你认为最经典的电脑游戏有哪些?
- 黑客入侵3个月浑然不知,或影响3万家客户!这个软件测试公司心太大了!
- 决策树算法python源代码_CART决策树(Decision Tree)的Python源码实现
- 怎样用计算机合并视频,电脑视频合并软件 , 怎样把多个视频合成为一个
- 2022-2028全球独立水疗浴缸行业调研及趋势分析报告
- 电阻电路的等效变化(Ⅰ)
- 登录失败:用户帐户限制。可能的原因包括不允许空密码,登录时间限制,或强制的策略限制。 ...
- 省钱版----查找 IoT 设备TTL线序__未完待续
- EDA元器件封装导入allegro
- 工地安全帽反光衣识别系统 yolov5
- 【Java基础1】Java开发工具包JDK
热门文章
- W600 PWM捕获功能
- python绘图subplot绘制5幅图:以2行绘制,首行3幅图,次行2幅图居中(内含绘制3幅图简单版)
- c++美发店管理系统设计_美发店如何打造会员管理系统?掌柜智囊—收银机必不可少...
- js截屏 video_js获取video任意时间的画面截图
- 通过命令行形式编译QT源程序
- 学会python怎么赚钱 贴吧_我月薪5000,靠Python搞副业月入3万
- 什么是用户对计算机进行配置的重要工具,《计算机常用工具软件》试题1
- matlab计算电路环流,双反星形整流电路并联运行环流分析
- linux文件的操作原理简介 以及 实现linux cp命令的代码
- 小型邮件服务器,windows 2003 server小型邮件服务器架设