• k-近邻算法原理入门-机器学习


    //2019.08.01下午
    机器学习算法1——k近邻算法
    1、k近邻算法是学习机器学习算法最为经典和简单的算法,它是机器学习算法入门最好的算法之一,可以非常好并且快速地理解机器学习的算法的框架与应用。
    2、kNN机器学习算法具有以下的特点:
    (1)思想极度简单
    (2)应用的数学知识非常少
    (3)解决相关问题的效果非常好
    (4)可以解释机器学习算法使用过程中的很多细节问题
    (5)更加完整地刻画机器学习应用的流程

    其原理图如下:在所有的原有数据集基础上判断新的点的属性分类时,指定k的值,然后找到所有原始数据点中与其新输入需要判断的点的最近的k的点,然后根据这k个点的属性分类来确定新的点的属性。

    图1 原始数据点

    图2 新输入点的分布位置,指定k为3,即找到最近的三个点

    4、KNN算法原理介绍及其训练学习代码实现:
    import numpy as np
    import matplotlib.pyplot as plt #导入相应的数据可视化模块
    raw_data_X=[[3.393533211,2.331273381],
    [3.110073483,1.781539638],
    [1.343808831,3.368360954],
    [3.582294042,4.679179110],
    [2.280362439,2.866990263],
    [7.423436942,4.696522875],
    [5.745051997,3.533989803],
    [9.172168622,2.511101045],
    [7.792783481,3.424088941],
    [7.939820817,0.791637231]
    ]
    raw_data_Y=[0,0,0,0,0,1,1,1,1,1]
    print(raw_data_X)
    print(raw_data_Y)
    x_train=np.array(raw_data_X)
    y_train=np.array(raw_data_Y)     #数据的预处理,需要将其先转换为矩阵,并且作为训练数据集
    print(x_train)
    print(y_train)
    plt.figure(1)
    plt.scatter(x_train[y_train==0,1],x_train[y_train==0,0],color="g")
    plt.scatter(x_train[y_train==1,0],x_train[y_train==1,1],color="r") #将其散点图输出
    x=np.array([8.093607318,3.365731514]) #定义一个新的点,需要判断它到底属于哪一类数据类型
    plt.scatter(x[0],x[1],color="b") #在算点图上输出这个散点,看它在整体散点图的分布情况
    #kNN机器算法的使用
    from math import sqrt
    distance=[]
    for x_train in x_train:
    d=sqrt(np.sum((x_train-x)**2))
    distance.append(d)
    print(distance)
    d1=np.argsort(distance) #输出distance排序的索引值
    print(d1)
    k=6
    n_k=[y_train[(d1[i])] for i in range(0,k)]
    print(n_k)
    from collections import Counter #导入Counter模块
    c=Counter(n_k).most_common(1)[0][0] #Counter模块用来输出一个列表中元素的个数,输出的形式为列表,其里面的元素为不同的元组
    #另外的话对于Counter模块它有.most_common(x)可以输出统计数字出现最多的前x个元组,其中元组的key是其元素值,后面的值是出现次数
    y_predict=c
    print(y_predict)
    plt.show() #输出点的个数

    实现代码及其结果如下:

  • 相关阅读:
    CRM 2013 相关下载 / 2013-10-11
    四十,Importer extension 主要(/imports)
    三十九,GeoWebCache 播种和截断(/seed)
    三十八,GeoWebCache 重新加载(/reload)
    三十七,GeoWebCache 质量截断(/statistics)
    三十六,GeoWebCache 质量截断(/masstruncate)
    三十五,GeoWebCache 图层(/layers)
    三十四,GeoWebCache 主页(/index)
    三十三,GeoWebCache 网格集(/gridsets)
    三十二,GeoWebCache 全局配置(/global)
  • 原文地址:https://www.cnblogs.com/Yanjy-OnlyOne/p/11283454.html
Copyright © 2020-2023  润新知