文章目录

  • 前言
  • 一、K近邻算法的数学基础?
  • 二、分类算法-k近邻算法(KNN)
    • 1.定义
    • 2.计算公式
    • 3. K近邻API
  • 三、代码实例化演示
    • 1.==案例:==
    • 2. 数据的处理![在这里插入图片描述](https://img-blog.csdnimg.cn/4f810731a9284d1db4433ba699befb8f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAd2VpeGluXzQ0NzE5NTI5,size_16,color_FFFFFF,t_70,g_se,x_16)
    • 3. 实例流程
  • 三、k-近邻算法优缺点
  • 四、总结

学习最简单的分类算法-K近邻算法

前言

一、K近邻算法的数学基础?


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

预测影片是爱情片

二、分类算法-k近邻算法(KNN)

1.定义

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

2.计算公式

计算距离公式

3. K近邻API

三、代码实例化演示

1.案例:

2. 数据的处理

3. 实例流程

1、数据集的处理

2、分割数据集

3、对数据集进行标准化

4、estimator流程进行分类预测

""
@author: Administrator
@file: 03_K近邻算法.py
@time: 2021/10/20
@desc:
通过K近邻算法,训练模型,预测客户的place_id
"""
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
def kuns():#1.读取训练集数据data=pd.read_csv(r"F:\future\5-机器学习\facebook-v-predicting-check-ins\train.csv")"""一、处理数据"""#2.缩小数据范围#print(data.head(3))data=data.query("x>1 & x <1.25 & y >2.5 & y <2.75")# 3.处理日期数据time_value=pd.to_datetime(data["time"],unit="s")# 4. 将时间序列转化为字典格式的时间序列time_v=pd.DatetimeIndex(time_value)data.loc[:,"day"]=time_v.day#利用loc 而非data["列名"]=value,因为只会将value的copy添加到df的新列上data.loc[:,"hour"]=time_v.hourdata.loc[:,"weekdays"]=time_v.weekday#5. 删除时间戳-timedata=data.drop("time",axis=1)# 6. 将签到位置中少于3个用户的place_id进行删除# 6.1 将place_id 进行分组与统计:place_count=data.groupby("place_id").count()#place_count是df类型,并且与data中place_id数据一致,其他是次数"""随便取一个column,将次数阈值设置为3"""tf=place_count[place_count["row_id"]>3].reset_index()#重新设置index,则place_id会进入place_count中# 7. 筛选data中的place_id值,即如果在tf中就保留在data中,即利用tf中place_id 筛选data 中place_iddata=data[data["place_id"].isin(tf.place_id)]#df["列名"]=df.列名"""二、特征工程"""# 1. 取出数据集中的特征值和目标值y=data["place_id"]x=data.drop("place_id",axis=1)# 2. 进行分割数据集,形成训练集和测试集"""关键输出的是训练集_特征值;测试集_目标值;测试集_目标值;测试集_目标值"""x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.25)# #2 标准化训练集和测试集的特征值std=StandardScaler()x_train=std.fit_transform(x_train)#训练集的特征值建立标准,平均值,标准差x_test=std.transform(x_test)#直接利用训练集的特征值建立的标准# """# 三、 进行K近邻算法,构建模型,并利用分割的测试集进行验证# """# # 1、调用API,进行算法流程knn=KNeighborsClassifier(n_neighbors=5)# # 2. 传入训练集的特征值和目标值knn.fit(x_train,y_train)# # 3. 得出预测结果,进行计算测试集中特征值和上述输入的训练集的特征值之间的距离,并根据距离大小,利用类别进行判断y_predice=knn.predict(x_test)scor=knn.score(x_test,y_test)print(scor)if __name__=="__main__":kuns()

三、k-近邻算法优缺点

优点:
简单,易于理解,易于实现,无需估计参数,无需训练

缺点:
懒惰算法,对测试样本分类时的计算量大,内存开销大
必须指定K值,K值选择不当则分类精度不能保证

四、总结

使用场景:小数据场景,几千~几万样本,具体场景具体业务
去测试

回归算法--K近邻算法相关推荐

  1. 第4章 最基础的分类算法-k近邻算法

    思想极度简单 应用数学知识少 效果好(缺点?) 可以解释机器学习算法使用过程中的很多细节问题 更完整的刻画机器学习应用的流程 distances = [] for x_train in X_train ...

  2. 09_分类算法--k近邻算法(KNN)、案例、欧氏距离、k-近邻算法API、KNeighborsClassifier、及其里面的案例(网络资料+学习资料整理笔记)

    1 分类算法–k近邻算法(KNN) 定义:如果一个样本在特征空间中**k个最相似(即特征空间中最邻近)**的样本中的大多数属于某一个类别,则该样本也属于这个类别,则该样本也属于这个类别. k-近邻算法 ...

  3. 惰性学习算法 ---- k 近邻算法

    惰性学习算法 ---- k 近邻算法 KNN 是惰性学习算法的典型例子.说它具有 惰性 不是因为它看起来简单,而是因为它仅仅对训练数据集有记忆功能,而不会从训练集中通过学习得到一个函数. 这种基于记忆 ...

  4. python人工智能——机器学习——分类算法-k近邻算法

    分类算法-k近邻算法(KNN) 定义:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别. 来源:KNN算法最早是由Cover和Hart提 ...

  5. kNN算法(k近邻算法,k Nearest Neighbor)

    主要内容: 1.认识kNN算法 2.kNN算法原理 3.应用举例 4.kNN改进方法 1.认识knn算法 "看一个人怎么样,看他身边的朋友什么样就知道了",kNN算法即寻找最近的K ...

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

    K近邻算法 1. K-近邻算法简介 1.1 什么是K-近邻算法 根据你的"邻居"来推断出你的类别 K Nearest Neighbor算法⼜叫KNN算法,这个算法是机器学习⾥⾯⼀个 ...

  7. 分类算法——K近邻算法及其R实现

    原理:已知样本集中每一个数据与所属分类的对应关系,输入没有标签的新数据后,将新数据与训练集的数据对应特征进行比较,找出"距离"最近的k(通常k<20)数据,选择这k个数据中出 ...

  8. python人工智能——机器学习——分类算法-k近邻算法——kaggle案例: Facebook V: Predicting Check Ins

    题目及翻译 Facebook and Kaggle are launching a machine learning engineering competition for 2016. Faceboo ...

  9. 机器学习算法——K近邻法

    K近邻算法 k近邻算法(k-nearest neighbor,k-NN)是一种基本分类与回归方法.k-近邻算法的输入为实例的特征向量,对应于特征空间的点:输出为实例的类别,可以取多类.k-近邻算法假设 ...

  10. k近邻算法 (KNN)

    k近邻算法 k近邻算法(KNN,K-NearestNeighbor)是一种基本分类和回归方法,监督学习算法,本质上是基于一种数据统计的方法: 核心思想:给定一个训练数据集,对新的输入实例,在训练数据集 ...

最新文章

  1. 孙立岩 python-basic: 用于学习python基础的课件(十三十四 十五)
  2. java中setid(),Java Process.setId方法代碼示例
  3. winform 转 JAVA_C#转java
  4. Java一行代码打印当前系统时间
  5. 质量体系审核中的10大常见场景,你遇到了几个?
  6. 开放平台_XAuth
  7. 《WCF技术内幕》翻译5:第1部分_第1章_蓝月亮:WCF介绍和本章小结
  8. AT指令:AT+CMGF
  9. 104. 字符串函数
  10. 插槽样式_小程序,自定义组件之间的引用,使用插槽扩展组件
  11. 如何刷原生android系统版本,小米手机1原生Android4.1系统刷机教程
  12. 罗永浩:做直播带货很赚钱,一晚上利润轻松几百万 比卖锤子手机过瘾
  13. matlab中字体修改,matlab——修改图中字体
  14. python毕业设计总结范文大全_java毕业设计总结报告(精选范文3篇)
  15. 网格简化 二 、QEM算法
  16. R9 7845HX参数 R97845HX核显怎么样 锐龙R97845HX相当于什么水平
  17. Android Camera相机开发示例、Android 开发板 USB摄像头采集、定期拍照、定时拍照,安卓调用摄像头拍照、Android摄像头预览、监控,USB摄像头开发、摄像头监控代码
  18. win11恢复旧版右键菜单
  19. 角点检测汇总:Harris角点及Shi-Tomasi角点检测
  20. python如何循环执行_python循环执行语句怎么写

热门文章

  1. debian系统离线安装iperf2
  2. LoadRunner教程(20)-LoadRunner 导出分析报告
  3. 常用电感封装与电流关系
  4. 【脱壳-寻找OEP】通过堆栈平衡法找到OEP(ESP定律)
  5. Ae:时间轴面板(时间线区域)
  6. jdk目录详解及其使用方法
  7. C++实现人机对战围棋(使用Leela Zero权重)-自动提子
  8. win10系统对计算机要求,Win10系统对电脑配置要求 win10专业版教程
  9. 获取下载Qt安装包,Qt源码全国网址备忘录(不用注册Qt账户,即可下载各版本Qt安装包和Qt源码包)
  10. android日历的使用技巧,android日历控件的使用