什么是K-近邻算法(KNN)

根据邻居判断类型。如果一个样本在特征空间中有K个最相似(距离相近)的样本大多数属于一个类别,则该样品也属于这个类别。

如何求距离呢?非常简单,如图。

a1,a2,a3代表样本a的特征值 b1,b2,b3代表b的样本值,根据公式可以计算出a和b两个点的距离,各个特征值越相近,则距离越近。

K-近邻算法需要做标准化。

k-近邻算法的API(算法流程,无需考虑详细数据)

from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_splitimport pandas as pddata = pd.read_csv("路径")# 缩小数据范围
# data.query() 相当于sql语句,写条件,进行筛选
data = data.query("x > 1.0 & x < 1.25")
# 处理时间的数据 pd.to_datetime
time_value = pd.to_datetime(data['time'], unit='s')
# 把日期格式转换为字典数据
time = pd.DatetimeIndex(time_value)
# 构造一些特征,
data['day'] = time.day
data['hour'] = time.hour
data['weekday'] = time.weekday
# sklearn 1表示列
data = data.drop(['time'], axis=1)
# 把签到数量少于n的目标位置删除
place_count = data.groupby('place_id').count()
# reset_index() 把place_id当做一个属性,以便获取到
tf = place_count[place_count.row_id > 3].reset_index()# 判断是否存在包含关系 ,果果数据中的 place_id 不在 tf.place_id 中,被过滤
data = data[data['place_id'].isin(tf.place_id)]
# 去处数据中的特征值和目标值
y = data['place_id']
x = data.drop(['place_id'], axis=1)
# 进行训练值和特征值切分
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25)# 特征工程,标准化
std = StandardScaler()
# 对测试集和训练集进行标准化
x_train = std.fit_transform(x_train)
# 因为前面已经fit一次了, fit会计算平均值和标准差,不用再计算一次,直接transform
x_test = std.transform(x_test)
# 进行算法流程
knn = KNeighborsClassifier(n_neighbors=5)
# fit ,predict,score
fit = knn.fit(x_train, y_train)
# 得出预测结果
y_predict = fit.predict(x_test)
# 评估预测结果,得出准确率
knn.score(x_test, y_test)

K-近邻算法优缺点

优点:

  • 简单,易于理解,易于实现,无需估计参数(超参数),无需训练。

缺点:

  • K值取值 , K值取很小容易受异常点影响 , K取值很大 , 容易受数量波动影响。
  • 性能问题

a*算法的优缺点_K-近邻算法以及案例相关推荐

  1. k近邻算法matlab实现_k近邻算法

    k 近邻法 (k-NN) 是一种基于实例的学习方法,无法转化为对参数空间的搜索问题(参数最优化 问题).它的特点是对特征空间进行搜索.除了k近邻法,本章还对以下几个问题进行较深入的讨 论: 切比雪夫距 ...

  2. 算法的优缺点_机器学习算法优缺点 amp; 如何选择

    (点击上方公众号,可快速关注) 转自: 算法与数学之美 主要回顾下几个常用算法的适应场景及其优缺点! 机器学习算法太多了,分类.回归.聚类.推荐.图像识别领域等等,要想找到一个合适算法真的不容易,所以 ...

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

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

  4. java实现k 近邻算法_K近邻算法哪家强?KDTree、Annoy、HNSW原理和使用方法介绍

    1.什么是K近邻算法 K近邻算法(KNN)是一种常用的分类和回归方法,它的基本思想是从训练集中寻找和输入样本最相似的k个样本,如果这k个样本中的大多数属于某一个类别,则输入的样本也属于这个类别. 关于 ...

  5. yolo算法的优缺点分析_YOLO算法详细解析(一)

    目标检测和目标分类 图像识别算法是计算机视觉的基础算法,例如VGG,GoogLeNet,ResNet等,这类算法主要是判断图片中目标的种类. 目标检测算法和图像识别算法类似,但是目标检测算法不仅要识别 ...

  6. knn算法python理解与预测_K近邻算法用作回归的使用介绍(使用Python代码)

    介绍 在我遇到的所有机器学习算法中,KNN是最容易上手的.尽管它很简单,但事实上它其实在某些任务中非常有效(正如你将在本文中看到的那样). 甚至它可以做的更好?它可以用于分类和回归问题!然而,它其实更 ...

  7. yolo算法的优缺点分析_yolo算法介绍

    yolo算法介绍 (2020-06-06 16:49:28) 把Yolo模型搞清楚后不得不再次为人类的智慧感慨,一个巧妙的模型. 要想理解Yolo我们先要搞清楚Yolo到底要解决一个什么问题,解决这个 ...

  8. 机器学习:k近邻算法(KNN)介绍

    k近邻算法是一种最简单最经典的机器学习算法之一.该算法的原理为:当对测试样本进行分类时,首先通过扫描训练样本集,找到与该测试样本最相似的k个训练样本,根据这个样本的类别进行投票确定测试样本的类别.也可 ...

  9. etc的常见算法_几个常用算法的适应场景及其优缺点(非常好)

    本文主要回顾下几个常用算法的适应场景及其优缺点! 机器学习算法太多了,分类.回归.聚类.推荐.图像识别领域等等,要想找到一个合适算法真的不容易,所以在实际应用中,我们一般都是采用启发式学习方式来实验. ...

最新文章

  1. 深度学习笔记七:循环神经网络RNN(基本理论)
  2. Ubuntu在终端执行命令时出现的错误
  3. 自己身份信息泄漏了怎么办,别怕,带你了解身份管理与访问控制
  4. PyCaret:又一个神仙ML库
  5. 阅读react-redux源码(四) - connectAdvanced、wrapWithConnect、ConnectFunction和checkForUpdates
  6. Nginx的HTTP负载平衡
  7. Redis数据安全与性能保障——redis读书笔记4
  8. cacti配置流量汇总
  9. rust自我解脱_自我解脱
  10. [学习笔记]后缀平衡树
  11. Xshell 、PuTTY 复制文件到Linux
  12. 15个最好的Bootstrap设计工具推荐
  13. 虚幻引擎2D游戏开发教程系列
  14. 数据结构实验:数制转换
  15. 层次分析法(AHP)——MATLAB在数学建模中的应用(第2版)
  16. java jsp ssm210KTV点歌系统毕设成品源码项目介绍
  17. 提供风声无组件上传类V2.11下载 解决图片尺寸读取问题
  18. laser_filters源码整体分析
  19. 性能课程笔记(五)性能分析思路[转载高楼]
  20. 小学计算机教学的趣味性,浅谈小学信息技术课堂教学趣味性方法

热门文章

  1. c# 相对路径的一些文献
  2. Apache在windows的设置
  3. PPC(Pocket PC)中显示二进制数组(byte[])类型的图片
  4. codeUp 2143: 迷瘴 浮点计算|贪心
  5. android studio 无法输入中文,Android Studio 升级到3.0后输入法中文状态下无法选词的终极解决方案...
  6. mysql 分页算法_MySQL高效的分页算法
  7. html代码 打开本地文件,打开本地HTML文件
  8. mysql 预留一个自定义字段_MySQL 按指定字段自定义列表排序 | DevOps
  9. python日志输出 超量 停止_linux 内存分配参数导致的 buffer_pool 分配不出来的问题排查...
  10. Spring JdbcTemplate实例