文档章节

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

M
 MichaelShu
发布于 2017/09/11 17:19
字数 499
阅读 15
收藏 0
点赞 0
评论 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
粉丝 3
博文 70
码字总数 14110
作品 0
海淀
技术主管
机器学习实战---KNN算法的应用小例

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

qq_39525832 ⋅ 05/28 ⋅ 0

K最近邻(k-Nearest Neighbor) 浅析

K最近邻(k-Nearest Neighbor,KNN)分类算法的核心思想是如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。KNN算法可用于多...

刘敬 ⋅ 05/08 ⋅ 0

机器学习新手必学十大算法指南

在机器学习中有一种“无免费午餐(NFL)”的定理。简而言之,它指出没有任何一个算法可以适用于每个问题,尤其是与监督学习相关的。 因此,你应该尝试多种不同的算法来解决问题,同时还要使用...

【方向】 ⋅ 01/28 ⋅ 0

CV最简单的分类算法——knn(k nearest neighbors)

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

iaccepted ⋅ 2014/12/06 ⋅ 0

浅谈机器学习分类算法

目前随着人工智能的发展,机器学习的应用领域日益宽泛,各种机器学习适应不同的应用场景,而机器学习差别的关键点之一就在于所使用算法的不同,今天就为大家介绍 4 种主要的分类算法。 朴素贝...

又拍云 ⋅ 2017/12/19 ⋅ 0

视觉机器学习2----KNN算法

参考博客:点击打开链接 KNN理论成熟,是最简单的机器学习方法之一,可以用它来实现分类和回归,是监督学习方法之一。 KNN算法基本思想:输入没有标签即未经分类的新数据,首先提取新数据的特...

dz4543 ⋅ 05/07 ⋅ 0

机器学习实战入门篇之二:kNN算法 | 她是不是你喜欢的类型?

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

shareLin ⋅ 2016/04/26 ⋅ 0

MADlib——基于SQL的数据挖掘解决方案(21)——分类之KNN

一、分类方法概要 1. 分类的概念 数据挖掘中分类的目的是学会一个分类函数或分类模型,该模型能把数据库中的数据项映射到给定类别中的某一个。分类可描述如下:输入数据,或称训练集(Train...

wzy0623 ⋅ 03/05 ⋅ 0

人工智障学习笔记——机器学习(6)协同过滤

一.概念 有句成语可以将协同过滤这个思想表现的淋漓尽致,那就是物以类聚,人以群分 ——出处:《易经·系辞上》: 天尊地卑,乾坤定矣。卑高以陈,贵贱位矣。动静有常,刚柔断矣。方以类聚,...

sm9sun ⋅ 2017/11/14 ⋅ 0

KNN练习实例

KNN 概述 k-近邻(kNN, k-NearestNeighbor)算法是一种基本分类与回归方法,我们这里只讨论分类问题中的 k-近邻算法。` 点击详情学习 k 近邻算法的输入为实例的特征向量,对应于特征空间的点...

JasonhavenD ⋅ 2017/12/09 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Boost库编译应用

版本:Boost 1.66.0 Windows库编译 官网指南:直接执行bootstrap.bat处理文件即可,可以我却遇到一堆的问题。 环境:Windows 10 + Visual Studio 2017 Boost编译出来库命名 boost库生成文件命...

水海云 ⋅ 22分钟前 ⋅ 0

解决Eclipse发布到Tomcat丢失依赖jar包的问题

如果jar文件是以外部依赖的形式导入的。Eclipse将web项目发布到Tomcat时,是不会自动发布这些依赖的。 可以通过Eclipse在项目上右击 - Propertics - Deployment Assembly,添加“Java Build ...

ArlenXu ⋅ 22分钟前 ⋅ 0

iview tree组件层级过多时可左右滚动

使用vue+iview的tree组件,iview官网iview的tree树形控件 问题描述:tree层级过多时左右不可滚动 问题解决:修改overflow属性值 .el-tree-node>.el-tree-node_children { overflow: vi...

YXMBetter ⋅ 24分钟前 ⋅ 0

分布式锁

1.通过数据库实现 http://www.weizijun.cn/2016/03/17/%E8%81%8A%E4%B8%80%E8%81%8A%E5%88%86%E5%B8%83%E5%BC%8F%E9%94%81%E7%9A%84%E8%AE%BE%E8%AE%A1/ 2.ZK实现:curator-recipes分布式锁的......

素雷 ⋅ 33分钟前 ⋅ 0

Sublime Text3 快捷键

选择类 Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本。 Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同文本进行同时编辑。举个栗子:快速选中并更改所有相同的变量名...

AndyZhouX ⋅ 39分钟前 ⋅ 0

XamarinAndroid组件教程RecylerView自定义适配器动画

XamarinAndroid组件教程RecylerView自定义适配器动画 如果RecyclerViewAnimators.Adapters命名空间中没有所需要的适配器动画,开发者可以自定义动画。此时,需要让自定义的动画继承Animation...

大学霸 ⋅ 40分钟前 ⋅ 0

eureka 基础(二)

使用Eureka服务器进行身份验证 如果其中一个eureka.client.serviceUrl.defaultZone网址中包含一个凭据(如http://user:password@localhost:8761/eureka)),HTTP基本身份验证将自动添加到您...

明理萝 ⋅ 43分钟前 ⋅ 1

Kubernetes(五) - Service

Kubernetes解决的另外一个痛点就是服务发现,服务发现机制和容器开放访问都是通过Service来实现的,把Deployment和Service关联起来只需要Label标签相同就可以关联起来形成负载均衡,基于kuberne...

喵了_个咪 ⋅ 43分钟前 ⋅ 0

更新队友POM文件后报错

打开报错的地方的pom及其引用方法所在文件的pom,观察其版本号是否一致,不一致进行更改

森火 ⋅ 56分钟前 ⋅ 0

IDEA使用sonarLint

一、IDEA如何安装SonarLint插件 1.打开 Idea 2.点击【File】 3.点击【Settings】 4.点击【Plugins】 5.在搜索栏中输入“sonarlint”关键字 6.点击【Install】进行安装 7.重启Idea 二、IDEA如...

开源中国成都区源花 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部