机器学习之 KNN近邻算法(一)入门
一、理论
是有监督学习的分类算法
当预测一个新的值x的时候,根据它距离最近的K个点是什么类别来判断x属于哪个类别。
理论相关链接:https://www.cnblogs.com/listenfwind/p/10311496.html
二、流程
1.数据预处理:目标label转换成数字
2.数据集进行二八分,测试KNN模型计算的准确性
三、代码
准备数据:
moviename,kiss,action,type 我在时间尽头等你,20,0,爱情 倩女幽魂,10,5,爱情 龙岭迷窟,2,30,动作 叶问,0,40,动作 极限先锋,5,20,动作 东海人鱼传,15,5,爱情 上海王,10,2,爱情 海王,2,20,动作 喋血战士,10,30,动作 亲吻亭,40,2,爱情
代码:设定某个neighbor的值,求出一个预测模型,并求出该model的准确率
#-*-coding:gb2312-*- import numpy as np import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.preprocessing import LabelEncoder if __name__ == '__main__': # 读取csv中的电影信息数据 df = pd.read_csv("D:/PyProjects/demo/com/njbdqn/NearestNeighbors/movie.csv",encoding='gbk') # print(df) # 将目标字符串列转为数字(为了方便后面求预测准确率) label = LabelEncoder().fit_transform(df['type']) print(label) # 电影分 3 7组 train,test = df.iloc[:7,1:3],df.iloc[7:,1:3] # 抓取1 2列(kiss和action)作为特征(使用二维作为特征!) train_target,test_real_target = label[:7],label[7:] # label是一维数组,取前7个和后3个 # 开启 KNN模型进行模型训练,设n等于5 knn = KNeighborsClassifier(n_neighbors=5) knn.fit(train,train_target) # 利用留下的2个电影进行测试 pred = knn.predict(test) print(pred) # 预测的结果 print("-------") print(test_real_target) # 真实数据 print("====准确率===") # 衡量预测的准确性 print(1-abs(pred-test_real_target).sum()/len(pred))
结果:
[1 1 0 0 0 1 1 0 0 1] # 真实label
[1 0 1] # 预测结果
-------
[0 0 1] # 真实数据
====准确率===
0.6666666666666667