1、KNN简介
KNN英文全如称果给定 ,中文名称为K最近邻算法,它是由Cover和Hart在1968年提出
来的
作为相似性度量的距离函数一般满足下列性质:
注:这里,X,Y和Z是对应特征空间中的三个点
假设X,Y分别是N维特征空间中的一个点,其中d(X,Y)表示相应的距离函
数,它给出了X和Y之间的距离测度
2、KNN原理
1、计算已知类别数据集中的点与当前点之间的距离;
2、按照距离递增次序排序
3、选择与当前距离最小的k个点
4、确定当前k个点所在类别的出现概率
5、返回前k个点出现频率最高的类别作为当前点的预测分类
3、电影分类案例
1、数据


2、代码
#-*-coding:utf-8-*-
import numpy as np
import pandas as pd
def distance(v1,v2):
dist=np.sqrt(np.sum(np.power((v1-v2),2)))
return dist
#加载数据
data=pd.read_excel('./电影分类数据.xlsx')
print('data',data)
#获取训练集
train=data.iloc[:,:6]
print('train',train)
#获取训练集的特征值与目标值
train_x=train.iloc[:,:-1]
train_y=train.iloc[:,-1]
#获取测试集
test=data.columns[-4:]
print('test',test)
#进行计算距离
#循环计算每一个样本与测试集的距离
for i in range(train.shape[0]):
#计算距离
dist=distance(train_x.iloc[i,2:5],test[1:])
train.loc[i,'dist']=dist
#对距离按照升序排序
train.sort_values(by='dist',inplace=True)
#确定K值,k值不同结果不同
k=1
res=train.loc[:,'电影类型'][:k].mode()[0]
print(res)
|