当前位置:   article > 正文

机器学习——python可视化实现KNN算法_knn 可视化 python

knn 可视化 python

简介

这里通过python的绘图工具Matplotlib包可视化实现机器学习中的KNN算法。
需要提前安装python的Numpy和Matplotlib包。
KNN–最近邻分类算法,算法逻辑比较简单,思路如下:

  1. 设一待分类数据iData,先计算其到已标记数据集中每个数据的距离,例如欧拉距离sqrt((x1-x2)^2+(y1-y2)^2);

  2. 然后根据离iData最近的k个数据的分类,出现次数最多的类别定为iData的分类。

KNN——最近邻算法python代码

代码实现:

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

def KNNClassify(labelData,predData,k):  #数据集包含分类属性
#labelData 是已经标记分类的数据集
#predData 未分类的待预测数据集
    labShape = labelData.shape
    for i in range(predData.shape[0]): #以predData的每行数据进行遍历
        iData = predData[i]
        iDset = np.tile(iData,(labShape[0],1))   #将iData重复,扩展成与labelData同形的矩阵
        #这里用欧拉距离sqrt((x1-x2)^2+(y1-y2)^2)
        diff = iDset[...,:-1] - labelData[...,:-1]
        diff = diff**2
        distance = np.sum(diff,axis=1)
        distance = distance ** 0.5  #开根号
        sortedIND = np.argsort(distance)   #排序,以序号返回。
        classCount = { }
        for j in range(k):  #计算距离最近的前k个标记数据的类别
            voteLabel = labelData[sortedIND[j],-1]
            classCount[voteLabel] = classCount.get(voteLabel,0)+1

        maxcls = max(classCount,key=classCount.get)   #类别最多的,返回键名(类别名)
        predData[i][...,-1] =  maxcls

    return predData
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

为了测试这个算法,需要现成的已分类数据集,由于手动输入很有限,数据量少,耗时。作为学习我们这里用代码模拟生成数据来进行测试。下面是生成已分类数据集的代码:

生成模拟数据的函数

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

#模拟生成分类数据
#目标是产生二维坐标中的几堆数据集,每堆为一个类
#函数逻辑:
#将x轴分段,每个段设一个中心的,所有的中心点用cores存储。
#设置每个数据中心点core的类别,由中心点在一定范围内随机产生数据,并将这些数据设为和core一样的类别
#所以每类的数据会简单的被X轴的每段大致分开

def makeKNNData(colnum,clsnum,nums,cores = []):
#colnum单个数据拥有特征数量(包括数据的分类);
# clsnum表示共有多少种分类;
# nums是一个元组,表示每个类别希望产生多少数据样本,如colnum为5,nums为[56, 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/549857
推荐阅读
相关标签
  

闽ICP备14008679号