博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
机器学习——K-近邻(KNN)算法
阅读量:5898 次
发布时间:2019-06-19

本文共 1702 字,大约阅读时间需要 5 分钟。

hot3.png

机器学习——KNN(K Nearest Neigbour)算法,其实挺简单的,计算欧氏距离,排序,但是这就是最简单的通过对已有的分类的数据后,来喂数据来完成机器学习的。

机器学习最重要的2点:1.分类  2.回归预测    

这是个很好的简单的例子

Python3.6下编译通过

先编写一个KNN.py文件,如下:

from numpy import *##给出训练数据以及对应的类别def createDataSet():    group = array([[1.0, 2.0], [1.2, 0.1], [0.1, 1.4], [0.3, 3.5]])    labels = ['A', 'A', 'B', 'B']    return group, labels###通过KNN进行分类def classify(input, dataSet, label, k):    dataSize = dataSet.shape[0]    print("dataSize = %d" % dataSize)    ####计算欧式距离    diff = tile(input, (dataSize, 1)) - dataSet    sqdiff = diff ** 2    print(diff)    print(sqdiff)    squareDist = sum(sqdiff, axis=1)  ###行向量分别相加,从而得到新的一个行向量    dist = squareDist ** 0.5    print(dist)    ##对距离进行排序    sortedDistIndex = argsort(dist)  ##argsort()根据元素的值从小到大对元素进行排序,返回下标    print(sortedDistIndex)    classCount = {}    for i in range(k):        print("i = %d"% i)        voteLabel = label[sortedDistIndex[i]]        print("voteLabel = %s" % voteLabel)        ###对选取的K个样本所属的类别个数进行统计        classCount[voteLabel] = classCount.get(voteLabel, 0) + 1    ###选取出现的类别次数最多的类别    maxCount = 0    for key, value in classCount.items():        if value > maxCount:            maxCount = value            classes = key    return classes

然后编写测试文件:

ML_test.py

import KNNfrom numpy import *dataSet,labels = KNN.createDataSet()input = array([1.1, 0.3])K = 3output = KNN.classify(input,dataSet,labels,K)print("测试数据为:",input,"分类结果为:",output)

参考:http://www.cnblogs.com/ybjourney/p/4702562.html

但有个地方:sortedDistIndex = argsort(dist) ##argsort()根据元素的值从小到大对元素进行排序,返回下标,原文是##argsort()根据元素的值从大到小对元素进行排序,返回下标,此处有误。

其实,KNN算法是监督学习的机器学习,这个例子引领我们机器学习的入门,其实C语言实现也挺简单的,但Python开发快,今后要是涉及到性能问题的时候,可以改用C实现。

转载于:https://my.oschina.net/michaelshu/blog/1535310

你可能感兴趣的文章
2014.7.30-8.3日广大网友的提问解答(答问题的第2个工作周)
查看>>
Powershell管理系列(二十五)PowerShell操作之获取AD账号及邮箱信息
查看>>
android开发 更新升级安装到一半自动闪退
查看>>
Linux安装telnet
查看>>
linux 标准I/O (二)
查看>>
【高德地图API】从零开始学高德JS API(三)覆盖物——标注|折线|多边形|信息窗口|聚合marker|麻点图|图片覆盖物...
查看>>
IOS 消息机制(NSNotificationCenter)
查看>>
JAVA 设计模式 策略模式
查看>>
openstack nova修改实例路径,虚拟磁盘路径
查看>>
java.sql.SQLException: Lock wait timeout exceeded --转
查看>>
使用C#进行图像处理的几种方法(转)
查看>>
Ajax原理学习
查看>>
sap scriptfom 多语言翻译
查看>>
实现超级简单的bug管理系统
查看>>
Java集合中的AbstractMap抽象类
查看>>
图像滤镜艺术---(Lightleaks Filter)漏光滤镜
查看>>
[LeetCode] Find Anagram Mappings 寻找异构映射
查看>>
--Too small initial heap for new size specified
查看>>
黄聪:3分钟学会sessionStorage用法
查看>>
Entity Framework 全面教程详解(转)
查看>>