文档章节

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

M
 MichaelShu
发布于 2017/09/11 17:19
字数 499
阅读 140
收藏 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
粉丝 7
博文 127
码字总数 26735
作品 0
海淀
技术主管
私信 提问
加载中

评论(0)

手把手丨我们在UCL找到了一个糖尿病数据集,用机器学习预测糖尿病(一)

作者:Susan Li 编译:袁雪瑶、吴双、姜范波   根据美国疾病控制预防中心的数据,现在美国1/7的成年人患有糖尿病。但是到2050年,这个比例将会快速增长至高达1/3。我们在UCL机器学习数据库...

osc_z1hvg4cu
2018/04/24
4
0
「10」民主投票法——KNN的秘密

前言 公元前6世纪,雅典创立了民主制度,随后被许多城邦所采用。经过数千年的演化,基于希腊公民体制的民主制度已经成为全世界最主要的主体制度。因此,后世将古希腊称为民主的起源。 在雅典...

图灵的猫.
02/14
0
0
【大数据分析常用算法】3.K-近邻算法

简介 K-近邻(K-Nearest Neighbors, KNN)是一个非常简单的机器学习算法,很多机器学习算法书籍都喜欢将该算法作为入门的算法作为介绍。 KNN分类问题是找出一个数据集中与给定查询数据点最近...

Areya
2019/03/01
67
0
机器学习算法(一)——kNN算法

一、kNN算法简介 1-1、kNN算法简介 kNN算法,即k最近邻算法(k-NearestNeighbor)是数据挖掘算法中最基础的算法之一。所谓k最近邻就是k个最近的邻居的意思。 1-2、kNN算法思想 kNN是一种分类...

筠初
02/24
189
0
【7%】100小时机器学习——K近邻法

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

JustMe23
2018/11/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Apache Jmeter 入门

Jmeter是一款优秀的开源测试工具, 是每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率。 本文将通过一个实际的测试例子, 来讲解Jmeter的基本用法。 Jmeter 介绍...

JEECG开源社区
20分钟前
21
0
Spring Cloud 系列之 Apollo 配置中心(二)

本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Apollo 配置中心(一) 本篇文章讲解 Apollo 部门管理、用户管理、配置管理、集群管理。      点击链接观看:Apo...

哈喽沃德先生
22分钟前
20
0
原生ES-Module

首先是各大浏览器从何时开始支持module的: Safari 10.1 Chrome 61 Firefox 54 (有可能需要你在about:config页面设置启用dom.moduleScripts.enabled) Edge 16 使用方式 首先在使用上,唯一的...

东东笔记
22分钟前
4
0
DevExpress Winforms使用技巧与窍门集合(2020年5月汇总)

下载DevExpress v20.1完整版 DevExpress Winforms Controls 内置140多个UI控件和库,完美构建流畅、美观且易于使用的应用程序。想要体验?点击下载>> 本文中包含一些示例和调整WinForms UI组...

FILA6666
23分钟前
18
0
SwitchGlass for mac 1.4(331) 系统应用快速启动

mac系统应用怎么才能快速启动?这时候你需要一款mac系统应用快速启动软件!SwitchGlass Mac版是Mac电脑上的一款系统应用快速启动工具。SwitchGlass Mac版为你的Mac应用增加了一个专用的应用程...

麦克W
26分钟前
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部