文档章节

机器学习——K-近邻(KNN)算法

M
 MichaelShu
发布于 2017/09/11 17:19
字数 499
阅读 18
收藏 0

机器学习——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 KNN
from numpy import *

dataSet,labels = KNN.createDataSet()
input = array([1.1, 0.3])
K = 3
output = 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实现。

© 著作权归作者所有

共有 人打赏支持
M
粉丝 5
博文 102
码字总数 21993
作品 0
海淀
技术主管
私信 提问
【7%】100小时机器学习——K近邻法

K近邻法(K-NN,k-NearestNeighbor) 前言 什么是KNN K-NN是一种简单且最常用的分类算法,可以应用于回归计算。K-NN是无参数学习,这意味它不会对底层数据的分布做出任何假设,它是基于实例并...

JustMe23
11/03
0
0
【Machine Learning】KNN算法虹膜图片识别

K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷。然而多数是基础理论知识介绍,缺乏实现的深入理解。本系列文章是作...

伏草惟存
2017/01/03
0
0
机器学习实战入门篇之二:kNN算法 | 她是不是你喜欢的类型?

通过本篇博文,你可以学习到: 环境搭建,主要为python,numpy,以及matplotlib库的搭建等; k-近邻算法; k-近邻算法实战练习,使用k-近邻算法判断某个同学是不是你喜欢的类型。 理论与实战...

shareLin
2016/04/26
0
0
CV最简单的分类算法——knn(k nearest neighbors)

邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法可以说是整个数据挖掘分类技术中最简单的方法了。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用她最接近的k个邻居...

iaccepted
2014/12/06
0
0
机器学习实战---KNN算法的应用小例

ok,今天花了一天时间看了小人书(机器学习实战),并且撸到了KNN算法,并完成了一个KNN算法的应用 真的!!!小人书是本特别不错的适合入门ML的书!!!!! 没有繁杂的数学推导过程,先给出概念和实战应用...

qq_39525832
05/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CockroachDB

百度云上的CockroachDB 云数据库 帮助文档 > 产品文档 > CockroachDB 云数据库 > 产品描述 开源NewSQL – CockroachDB在百度内部的应用与实践 嘉宾演讲视频及PPT回顾:http://suo.im/5bnORh ...

miaojiangmin
25分钟前
1
0
I2C EEPROM驱动实例分析

上篇分析了Linux Kernel中的I2C驱动框架,本篇举一个具体的I2C设备驱动(eeprom)来对I2C设备驱动有个实际的认识。 s3c24xx系列集成了一个基于I2C的eeprom设备at24cxx系列。at24cxx系列芯片包...

yepanl
27分钟前
2
0
spring mvc拦截器,实现统计http请求的后台运行时间

使用两种方式,实现拦截http请求的后台运行时间。 废话不多说直接上代码 /** * Http请求时间统计 * 拦截所有请求 */public class HttpRquestTimeInterceptor extends HandlerIntercepto...

兜兜毛毛
44分钟前
3
0
设计模式之工厂模式

本篇博文主要翻译这篇文章: https://www.journaldev.com/1392/factory-design-pattern-in-java 由于翻译水平有限,自认为许多地方翻译不恰当,欢迎各位给出宝贵的建议,建议大家去阅读原文。...

firepation
今天
5
0

中国龙-扬科
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部