zoukankan      html  css  js  c++  java
  • 机器学习实战 k-近邻

     kNN.py 
    1
    from numpy import *#引入科学计算包 2 import operator #经典python函数库。运算符模块。 3 4 #创建数据集 5 def createDataSet(): 6 group=array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]]) 7 labels=['A','A','B','B'] 8 return group,labels 9 10 #算法核心 11 #inX:用于分类的输入向量。即将对其进行分类。 12 #dataSet:训练样本集 13 #labels:标签向量 14 def classfy0(inX,dataSet,labels,k): 15 #距离计算 16 dataSetSize =dataSet.shape[0]#得到数组的行数。即训练样本个数 17 diffMat =tile(inX,(dataSetSize,1))-dataSet#tile:numpy中的函数,行数扩充4倍,列扩充1倍。diffMat得到了目标与训练数值之间的差值。
         tile([0,0],[4,1])-dataSet
        
    18     sqDiffMat   =diffMat**2#各个元素分别平方
        
    19     sqDistances =sqDiffMat.sum(axis=1)#对应列相加,得到a2+b2
      
    20     distances   =sqDistanxes**0.5#开方,得到距离。
    21     sortedDistIndicies=distances.argsort()#数组值对应的索引从小到大排列
    22     #选择距离最小的k个点。
    23     classCount={}
    24     for i in range(k):
    25         voteIlabel=labels[sortedDistIndicies[i]]
    26         classCount[voteIlabel]=classCount.get(voteIlabel,0)+1
    27     #排序
    28     sortedClassCount=sorted(classCount.items(),key=operator.itemgetter(1),reverse=True)
    29     return sortedClassCount[0][0]

    测试:

    from kNN import *

    group,labels=createDataSet()

    classify0([10,10],group,labels,3)

    结果为A

  • 相关阅读:
    钉钉扫码登录前端页面实现
    本地开发的jar包放到本地maven仓库
    mybatise 设置全局变量实例
    版本控制器:Git
    PIP安装源
    Django跨域问题
    vue项目开发安装流程
    浅谈CSRF(Cross-site request forgery)跨站请求伪造(写的非常好)
    explicit抑制隐型转换
    拷贝构造函数
  • 原文地址:https://www.cnblogs.com/sclu/p/11535585.html
Copyright © 2011-2022 走看看