K-近邻算法介绍和案例使用

1.内容

  • 内容

    • 说明K-近邻算法的距离公式
    • 说明K-近邻算法的超参数K值以及取值问题
    • 说明K-近邻算法的优缺点
    • 应用KNeighborsClassifier实现分类
    • 了解分类算法的评估标准准确率
  • 应用
    • Facebook签到位置预测

2.什么是K-近邻算法

  • 你的“邻居”来推断出你的类别

2.1 K-近邻算法(KNN)

2.1.1 定义

如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

来源:KNN算法最早是由Cover和Hart提出的一种分类算法

2.1.2 距离公式

两个样本的距离可以通过如下公式计算,又叫欧式距离

3、电影类型分析

假设我们有现在几部电影

其中? 号电影不知道类别,如何去预测?我们可以利用K近邻算法的思想

3.1.1 问题

  • 如果取的最近的电影数量不一样?会是什么结果?

3.2.2 K-近邻算法数据的特征工程处理

  • 结合前面的约会对象数据,分析K-近邻算法需要做什么样的处理

4、K-近邻算法API

  • sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,algorithm=‘auto’)

    • n_neighbors:int,可选(默认= 5),k_neighbors查询默认使用的邻居数
    • algorithm:{‘auto’,‘ball_tree’,‘kd_tree’,‘brute’},可选用于计算最近邻居的算法:‘ball_tree’将会使用 BallTree,‘kd_tree’将使用 KDTree。‘auto’将尝试根据传递给fit方法的值来决定最合适的算法。 (不同实现方式影响效率)

5、案例:预测签到位置

数据介绍:将根据用户的位置,准确性和时间戳预测用户正在查看的业务。

train.csv,test.csv
row_id:登记事件的ID
xy:坐标
准确性:定位准确性
时间:时间戳
place_id:业务的ID,这是您预测的目标

官网:https://www.kaggle.com/navoshta/grid-knn/data

5.1 分析

  • 对于数据做一些基本处理(这里所做的一些处理不一定达到很好的效果,我们只是简单尝试,有些特征我们可以根据一些特征选择的方式去做处理)

    • 1、缩小数据集范围 DataFrame.query()

    • 4、删除没用的日期数据 DataFrame.drop(可以选择保留)

    • 5、将签到位置少于n个用户的删除

      place_count = data.groupby(‘place_id’).count()

      tf = place_count[place_count.row_id > 3].reset_index()

      data = data[data[‘place_id’].isin(tf.place_id)]

  • 分割数据集

  • 标准化处理

  • k-近邻预测

5.2 代码

def knncls():"""K近邻算法预测入住位置类别:return:"""# 一、处理数据以及特征工程# 1、读取收,缩小数据的范围data = pd.read_csv("./data/FBlocation/train.csv")# 数据逻辑筛选操作 df.query()data = data.query("x > 1.0 & x < 1.25 & y > 2.5 & y < 2.75")# 删除time这一列特征data = data.drop(['time'], axis=1)print(data)# 删除入住次数少于三次位置place_count = data.groupby('place_id').count()tf = place_count[place_count.row_id > 3].reset_index()data = data[data['place_id'].isin(tf.place_id)]# 3、取出特征值和目标值y = data['place_id']# y = data[['place_id']]x = data.drop(['place_id', 'row_id'], axis=1)# 4、数据分割与特征工程?# (1)、数据分割x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3)# (2)、标准化std = StandardScaler()# 队训练集进行标准化操作x_train = std.fit_transform(x_train)print(x_train)# 进行测试集的标准化操作x_test = std.fit_transform(x_test)# 二、算法的输入训练预测# K值:算法传入参数不定的值    理论上:k = 根号(样本数)# K值:后面会使用参数调优方法,去轮流试出最好的参数[1,3,5,10,20,100,200]knn = KNeighborsClassifier(n_neighbors=1)# 调用fit()knn.fit(x_train, y_train)# 预测测试数据集,得出准确率y_predict = knn.predict(x_test)print("预测测试集类别:", y_predict)print("准确率为:", knn.score(x_test, y_test))return None

5.3 结果分析

准确率: 分类算法的评估之一

  • 1、k值取多大?有什么影响?

k值取很小:容易受到异常点的影响

k值取很大:受到样本均衡的问题

  • 2、性能问题?

距离计算上面,时间复杂度高

6. K-近邻总结

  • 优点:

    • 简单,易于理解,易于实现,无需训练
  • 缺点:
    • 懒惰算法,对测试样本分类时的计算量大,内存开销大
    • 必须指定K值,K值选择不当则分类精度不能保证
      响?

k值取很小:容易受到异常点的影响

k值取很大:受到样本均衡的问题

  • 2、性能问题?

距离计算上面,时间复杂度高

6. K-近邻总结

  • 优点:

    • 简单,易于理解,易于实现,无需训练
  • 缺点:
    • 懒惰算法,对测试样本分类时的计算量大,内存开销大
    • 必须指定K值,K值选择不当则分类精度不能保证
  • 使用场景:小数据场景,几千~几万样本,具体场景具体业务去测试

(KNN)K-近邻算法介绍和 Facebook签到位置预测案例应用相关推荐

  1. knn K近邻算法python实现

    本文主要内容: knn K近邻算法原理 sklearn knn的使用,以及cross validation交叉验证 numpy 实现knn knn改进方法 1 knn K近邻算法原理 K近邻算法:给定 ...

  2. K-近邻算法案例——facebook签到位置预测

    目录 学习目标 一  开发环境 二  项目介绍 2.1  数据集介绍 三  步骤分析 四  运行结果 学习目标 通过Facebook位置预测案例熟练掌握KNN算法 一  开发环境 首先来看看我的开发环 ...

  3. 【20210922】【机器/深度学习】KNN (K近邻) 算法详解

    一.算法概念 KNN, K-near neighbor,即最近邻算法.它是一种分类算法,算法思想是:一个样本与数据集中的 k 个样本最相似,如果这 k 个样本中的大多数属于某一个类别,则该样本也属于这 ...

  4. knn(k近邻算法)——matlab

    目录 1. 基本定义 2. 算法原理 2.1 算法优缺点 2.2 算法参数 2.3 变种 3.算法中的距离公式 4.案例实现 4.1 读取数据 4.2 分离训练集和测试集 4.3 归一化处理 4.4  ...

  5. KNN K近邻算法学习

    KNN算法.k-nearest neighbor,或者K-近邻算法是一种经典的机器学习算法,可以完成分类和回归任务. KNN算法主要思想: 对于输入的特征X,选取与他记录最近的K个点,统计这K个点所属 ...

  6. K近邻算法KNN的简述

    什么是KNN K近邻算法又称KNN,全称是K-Nearest Neighbors算法,它是数据挖掘和机器学习中常用的学习算法,也是机器学习中最简单的分类算法之一.KNN的使用范围很广泛,在样本量足够大 ...

  7. 01 K近邻算法 KNN

    01 K近邻算法 KNN k近邻算法基础 等价于 scikit-learn中的机器学习算法封装 训练数据集,测试数据集 分类准确度 超参数 考虑距离权重 更多关于距离的定义 搜索明可夫斯基距离相应的p ...

  8. 【模式识别】实验二:K近邻算法(KNN)

    KNN是模式识别中的经典算法,本次实验就MNIST数据集来做KNN算法的实验,并结合前一次的LDA降维对数据进行进一步处理. 实验报告图片版 pdf版本可以戳这:模式识别实验报告:KNN K近邻算法 ...

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

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

  10. 机器学习算法系列之K近邻算法

    本系列机器学习的文章打算从机器学习算法的一些理论知识.python实现该算法和调一些该算法的相应包来实现. 目录 K近邻算法 一.K近邻算法原理 k近邻算法 通俗解释 近邻距离的度量 k值的选择 KN ...

最新文章

  1. Android学习笔记--处理UI事件
  2. Spring容器初始化Bean、销毁Bean前所做操作的定义方式汇总
  3. 兰山天书(贺兰山岩画)
  4. DCMTK:定义信号灯,互斥锁和读/写锁的类
  5. deepin下载python_深度操作系统中怎样下载python?
  6. 【project】十次方-01
  7. es6 Promise 的应用
  8. NSX控制平面和静态路由更新流程1
  9. 在linux使用git的操作,几个问题解决
  10. ajax获得远程html,select2通过AJAX获取远程数据的方法
  11. 期刊论文格式是什么样的,如何排版?
  12. 访问服务器显示无法访问目标主机,ip无法访问目标主机
  13. Win10设置分屏功能
  14. macOS系统允许任何来源APP的安装打开
  15. html的底层代码是哪种语言,HTML是什么
  16. 电阻系列知识(9)-0欧姆电阻的作用
  17. mysql设置id重新从1开始自增
  18. 苹果手机PD快充电压电流全程详解
  19. Spring Cloud OAuth2中访问/oauth/token报invalid_client问题的解决
  20. 论文阅读笔记《PatchMatch Stereo - Stereo Matching with Slanted Support Windows》

热门文章

  1. java判断接口地址是否存在_java.util.Iterator接口中的hashNext()方法是用来判断集合中是否存在下一个元素的()_学小易找答案...
  2. 智能楼宇一卡通系统QY-LY04A
  3. Delphi 实现多国语言
  4. SQL刷题:排名的问题
  5. PPT中的图像如何导出不失真的矢量图
  6. 不限速的免费下载神器,牛逼!
  7. 【Dart语言第1篇】基础学习
  8. sketch 导出html,用 Sketch 设计和输出响应式网页
  9. 80psi等于多少kpa_psikpa换算(kpa bar 换算)
  10. 自定义微信小程序TabBar