KNN算法原理与自实现电影分类

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、数据

KNN算法原理与自实现电影分类_第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)


 

你可能感兴趣的:(数据分析)