zoukankan      html  css  js  c++  java
  • 机器学习之 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

  • 相关阅读:
    关于C的struct结构的几个常见疑问。
    NAT类型
    Linux oops stack 分析
    关于pci_dev的定义
    还是动态添加控件 触发事件
    页面编译模型
    MDX 销售额与上月比较
    C语言的词法语法分析lex&yacc 经典收藏
    interrupt storm
    js获取mac地址
  • 原文地址:https://www.cnblogs.com/sabertobih/p/13920905.html
Copyright © 2011-2022 走看看