目录
K近邻算法:nearest neighbors classification
K近邻算法:nearest neighbors classification
邻居是什么类型,你就是什么类型。
k定义多少个邻居
物以类聚,人以群分
教会计算机根据‘邻居’分类,邻居:距离比较近
距离公式:欧氏距离
计算------>数学公式------>计算结果
原理
计算获取邻居(5个邻居)-------->统计,类别(富有,贫穷),富有:4个,贫穷:1个。
4 > 1 富有 > 贫穷 ------> 80% > 20% 计算机会返回概率结果,
人分类时,有可能出现错误,比如区分性别,人根据特征归类。
又比如12306验票,有的人,无法通过,人工通道(身份证和长相不一)
KNN入门使用
导包
import numpy as np
from sklearn.neighbors import KNeighborsClassifier
import pandas as pd
加载数据文件,切割数据
movie = pd.read_excel('./movies.xlsx',sheet_name=1)#加载数据文件,加载第二个
data=movie.iloc[:,1:3]#第一个:获取所有数据 第二个:对列切割
target=movie['分类情况']#目标值
display(data,target)#按目标值分类
算法,训练
knn = KNeighborsClassifier(n_neighbors=5)#邻居为5
# 训练,学习,算法,知道,数据和目标值target什么样关系
knn.fit(data,target)
# 预测,使用,应用,高考
# 碟中谍6:100,3
# 谍影重重5:67,2
# 前任2 1,10
X_test = pd.DataFrame({'武打镜头':[100,67,1],'接吻镜头':[3,2,10]})
X_test
# 计算机,根据规则,返回的结果
# 算法‘意见’:结果
knn.predict(X_test)
判断类型
鸢尾花数据集
KNN-鸢尾花分类
import numpy as np
from sklearn.neighbors import KNeighborsClassifier
from sklearn import datasets #导入数据集
# 鸢尾花,因为自然环境不同,所以类别可以细分
iris = datasets.load_iris()#加载鸢尾花
X = iris['data']
y = iris['target']
# 150代表着150个样本,4代表着4个属性:花萼长、宽;花瓣长、宽
X.shape
一部分用于训练,另一部分用测试
# 打乱顺序
np.random.shuffle(index)
index
# 数据简单,只有4个属性
# p = 1 距离度量采用的是:曼哈顿距离
# p = 2 距离度量采用的是:欧氏距离 n_jobs = 4:开几个进程
# 100**0.5 = 10
knn = KNeighborsClassifier(n_neighbors=7,weights='distance',p = 1,n_jobs = 4)#distance离的越近,权重越大
knn.fit(X_train,y_train)
y_ = knn.predict(X_test)
knn.score(X_test,y_test)