机器学习之 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

 

posted @ 2020-11-03 16:15  PEAR2020  阅读(174)  评论(0编辑  收藏  举报