一.KNN简介

  1.KNN算法也称为K邻近算法,是数据挖掘分类技术之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。
  2.KNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。 KNN算法在类别决策时,只与极少量的相邻样本有关。由于KNN算法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。

二.代码实现

# -*- coding: utf-8 -*-
"""
使用python程序模拟KNN算法
Created on Sat Jun 22 18:38:22 2019 @author: zhen
"""
import numpy as np
import collections as cs data = np.array([
[203,1],[126,1],[89,1],[70,1],[196,2],[211,2],[221,2],[311,3],[271,3]
])
feature = data[:,0] # 特征
print(feature) label = data[:,-1] # 结果分类
print(label) predictPoint = 200 # 预测数据
print("预测输入特征为:" + str(predictPoint)) distance = list(map(lambda x : abs(predictPoint - x), feature)) # 各点到预测点的距离
print(distance) sortIndex = np.argsort(distance) # 排序,返回排序后各数据的原始下标
print(sortIndex) sortLabel = label[sortIndex] # 根据下标重新进行排序
print(sortLabel) # k = 3 # 设置k值大小为3 for k in range(1,label.size+1):
result = cs.Counter(sortLabel[0:k]).most_common(1)[0][0] # 根据k值计算前k个数据中出现次数最多的分类,即为预测的分类
print("当k=" + str(k) + "时预测分类为:" + str(result))

三.结果

[203 126  89  70 196 211 221 311 271]
[1 1 1 1 2 2 2 3 3]
预测输入特征为:200
[3, 74, 111, 130, 4, 11, 21, 111, 71]
[0 4 5 6 8 1 2 7 3]
[1 2 2 2 3 1 1 3 1]
当k=1时预测分类为:1
当k=2时预测分类为:1
当k=3时预测分类为:2
当k=4时预测分类为:2
当k=5时预测分类为:2
当k=6时预测分类为:2
当k=7时预测分类为:1
当k=8时预测分类为:1
当k=9时预测分类为:1

四.总结

  1.根据训练数据和结果可知,当k较小时【比如本次当k=1】,若训练数据存在异常数据时容易出现预测错误的情况,因此一般K值都不能太小!

  2.当k值较大时,某个分类的训练数据越多,预测成此分类的可能性越大,因此,训练数据要先根据分类进行再平衡!

  3.一般k值的选择与分类数量有关,分类数量越大,k一般也越大,一般为取值为:type~2type之间!

  4.一般k值的选择和训练数据的大小有关,可以取值为训练数据的平方根左右为宜!

使用python模拟实现KNN算法的更多相关文章

  1. Python简单实现KNN算法

    __author__ = '糖衣豆豆' from numpy import * from os import listdir import operator #从列方向扩展 #tile(a,(size ...

  2. python最近邻分类器KNN算法

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

  3. 【Machine Learning】KNN算法虹膜图片识别

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

  4. 人工智能之KNN算法

    转载自:https://www.cnblogs.com/magic-girl/p/python-kNN.html 基于python实现的KNN算法 邻近算法(k-NearestNeighbor) 是机 ...

  5. [Python] 应用kNN算法预测豆瓣电影用户的性别

    应用kNN算法预测豆瓣电影用户的性别 摘要 本文认为不同性别的人偏好的电影类型会有所不同,因此进行了此实验.利用较为活跃的274位豆瓣用户最近观看的100部电影,对其类型进行统计,以得到的37种电影类 ...

  6. KNN算法--python实现

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

  7. k-近邻(KNN)算法改进约会网站的配对效果[Python]

    使用Python实现k-近邻算法的一般流程为: 1.收集数据:提供文本文件 2.准备数据:使用Python解析文本文件,预处理 3.分析数据:可视化处理 4.训练算法:此步骤不适用与k——近邻算法 5 ...

  8. kNN算法基本原理与Python代码实践

    kNN是一种常见的监督学习方法.工作机制简单:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k各训练样本,然后基于这k个“邻居”的信息来进行预测,通常,在分类任务中可使用“投票法”,即选择这k ...

  9. [Python]基于K-Nearest Neighbors[K-NN]算法的鸢尾花分类问题解决方案

    看了原理,总觉得需要用具体问题实现一下机器学习算法的模型,才算学习深刻.而写此博文的目的是,网上关于K-NN解决此问题的博文很多,但大都是调用Python高级库实现,尤其不利于初级学习者本人对模型的理 ...

随机推荐

  1. 行车记录仪 MyCar Recorder (转)

    行车记录仪 MyCar Recorder

  2. Nginx之Rewrite规则

    IF语句: http://tengine.taobao.org/nginx_docs/cn/docs/http/ngx_http_rewrite_module.html#if 首先申明nginx只有i ...

  3. 爬虫中Selenium和PhantomJS

    Selenium Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium 可以直接运行在浏览器上, ...

  4. MacOSX 虚拟机与宿主机的网络配置

    环境:MacOSX.VMware Fusion11.5.CentOS6 比较重要的两个网卡 安装虚拟机后,宿主机会多出几个网卡,其中vmnet1对应的Bridge(桥接方式),vmnet8对应NAT方 ...

  5. Dubbo_异常_服务注册运行正常但是Dubbo-Admin看不到服务

    出自:https://www.cnblogs.com/gossip/p/6021698.html 一.背景: 1.Dubbo服务正常注册到ZooKeeper 2.客户端调用Dubbo服务正常 二.原因 ...

  6. Java并发编程核心概念一览

    作者博客地址 https://muggle.javaboy.org. 并行相关概念 同步和异步 同步和异步通常来形容一次方法的调用.同步方法一旦开始,调用者必须等到方法结束才能执行后续动作:异步方法则 ...

  7. mysql 连接远程阿里云数据库

    一.修改mysql 数据库的远程访问权限 use mysql; SELECT HOST,user,PASSWORD FROM USER; -- 查询用户信息 UPDATE USER SET HOST= ...

  8. [数据结构 - 第6章] 树之二叉平衡树(C语言实现)

    一.什么是平衡二叉树? 平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两 ...

  9. web基础---->script标签的特殊使用

    今天要讲的就是怎样使用<script>去请求一个servlet,加载一些js资源以及额外的逻辑处理: 目录: JS的引入的几种方式 在script的标签中引入Servlet 动态引入JS的 ...

  10. [转帖]CNN、RNN、DNN的一般解释

    CNN.RNN.DNN的一般解释 https://www.jianshu.com/p/bab3bbddb06b?utm_campaign=maleskine&utm_content=note& ...