一、定义
k近邻算法用于分类:通过计算样本点和判别点之间的欧式距离,查看距离最小的k个样本点的所属类别,得出判别点的所属类别。
通俗意思就是,查看离判别点最近的k个邻居的所属类别,以少数服从多数的依据来判断其所属类别。
注:k近邻法需要对特征值进行标准化
二、API
sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,algorithm=‘auto’)
- n_neighbors为int类型的可选参数,默认为5,表示邻居数目;
- algorithm:{‘auto’,‘ball_tree’,‘kd_tree’,‘brute’},表示计算最近邻居的算法
三、案例
(一)案例一:最优签到点
1.题目:已知许多人的签到坐标、时间和签到的准确率,预测老刘的最优签到点?
2.数据:https://www.kaggle.com/navoshta/grid-knn/data
3.文件说明:train.csv,test.csv
row id:签入事件的id
x y:坐标
accuracy: 准确度,定位精度
time: 时间戳
place_id: 签到的位置,这也是你需要预测的内容
4.分析:查看最近k个邻居的签到选择点,通过计算老刘与邻居行为之间的距离,以少数服从多数的原则得出老刘的最优签到点。
特征值:序号、所有邻居的坐标、签到时间、定位的准确率
目标值:所有邻居的签到位置id
操作步骤:获取数据、数据处理(缩小数据范围、时间戳进行(年月日周时分秒)的处理当作新的特征、删除少于某个签到人数的位置、去除不必要的特征)、特征处理(标准化)、
from sklearn.model_selection import train.test_split
from sklearn.neighbors import KNeighborsClassifier
import pandas as pd
#1.读取数据
pd.read_csv(./data/FBlocation/train.csv)
#2.处理数据
#2.1缩小数据
data.query("x>1.0 & x<1.25 & y>2.5 &y<2.75")
#2.2处理时间数据
time_value=pd.to_datetime(data['time'],unit='s')#把时间戳转换为年-月-日的格式
time_value=pd.DatetimeIndex(time_v