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

这里举一个很简单的例子来理解一下KNN算法的原理,假设有以下数据,根据微信、电话、短信联系的次数将朋友进行归类为认识、普通、好友三个类别,如下:

根据A-J的特征来确定K应该属于哪一类朋友?

那么就可以用下面的代码来进行归类:

#! /usr/bin/env python
# encoding:utf-8
import math
def KNNAlg():
base_data = {"A": [2, 0, 0, "认识"],
"B": [5, 1, 0, "认识"],
"C": [30, 5, 2, "好友"],
"D": [10, 3, 1, "好友"],
"E": [8, 2, 5, "普通"],
"F": [32, 5, 2, "好友"],
"G": [6, 2, 1, "普通"],
"H": [9, 3, 0, "普通"],
"I": [11, 1, 4, "好友"],
"J": [2, 0, 2, "认识"]} target = [20,4,3] #K的数据
KNN =[]
for key,v in base_data.items():
d = math.sqrt((target[0]-v[0])**2 + (target[1]-v[1])**2 + (target[2]-v[2])**2) #计算距离
KNN.append([key,round(d,2)]) #取两位小数
KNN.sort(key=lambda dic:dic[1]) #根据第二项排序
KNN = KNN[:6] #取距离最近的6个邻居
print(KNN) labels = {"认识": 0, "好友": 0, "普通": 0}
for s in KNN:
temp = base_data[s[0]]
#print(temp)
labels[temp[3]] += 1
labels = sorted(labels.items(),key = lambda dic: dic[1],reverse=True)
print(labels,labels[0][0],sep='\n') if __name__ == '__main__':
KNNAlg()

最后的输出:

[('好友', 4), ('普通', 2), ('认识', 0)]
好友

可以看到K是属于好友类别的。

KNN是属于惰性学习的,样本数据已经很明确的归类,新的数据只需要归类就好了,并没有一个训练的过程。其次,根据K的大小和样本容量的分布,很容易得出错误的结论,再次,样本容量很大时,计算会变得很复杂,计算量大

  

python机器学习一:KNN算法实现的更多相关文章

  1. 使用python模拟实现KNN算法

    一.KNN简介 1.KNN算法也称为K邻近算法,是数据挖掘分类技术之一.所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表. 2.KNN算法的核心思想是如果一个样本 ...

  2. 菜鸟之路——机器学习之KNN算法个人理解及Python实现

    KNN(K Nearest Neighbor) 还是先记几个关键公式 距离:一般用Euclidean distance   E(x,y)√∑(xi-yi)2 .名字这么高大上,就是初中学的两点间的距离 ...

  3. 机器学习之KNN算法

    1 KNN算法 1.1 KNN算法简介 KNN(K-Nearest Neighbor)工作原理:存在一个样本数据集合,也称为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属 ...

  4. 机器学习:k-NN算法(也叫k近邻算法)

    一.kNN算法基础 # kNN:k-Nearest Neighboors # 多用于解决分裂问题 1)特点: 是机器学习中唯一一个不需要训练过程的算法,可以别认为是没有模型的算法,也可以认为训练数据集 ...

  5. python机器学习的常用算法

    Python机器学习 学习意味着通过学习或经验获得知识或技能.基于此,我们可以定义机器学习(ML)如下 - 它可以被定义为计算机科学领域,更具体地说是人工智能的应用,其为计算机系统提供了学习数据和从经 ...

  6. 机器学习笔记--KNN算法2-实战部分

    本文申明:本系列的所有实验数据都是来自[美]Peter Harrington 写的<Machine Learning in Action>这本书,侵删. 一案例导入:玛利亚小姐最近寂寞了, ...

  7. Python简单实现KNN算法

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

  8. JavaScript机器学习之KNN算法

    译者按: 机器学习原来很简单啊,不妨动手试试! 原文: Machine Learning with JavaScript : Part 2 译者: Fundebug 为了保证可读性,本文采用意译而非直 ...

  9. 机器学习笔记--KNN算法1

    前言 Hello ,everyone. 我是小花.大四毕业,留在学校有点事情,就在这里和大家吹吹我们的狐朋狗友算法---KNN算法,为什么叫狐朋狗友算法呢,在这里我先卖个关子,且听我慢慢道来. 一 K ...

  10. 机器学习入门-Knn算法

    knn算法不需要进行训练, 耗时,适用于多标签分类情况 1. 将输入的单个测试数据与每一个训练数据依据特征做一个欧式距离. 2. 将求得的欧式距离进行降序排序,取前n_个 3. 计算这前n_个的y值的 ...

随机推荐

  1. Mybatis 系列9-强大的动态sql 语句

    [Mybatis 系列10-结合源码解析mybatis 执行流程] [Mybatis 系列9-强大的动态sql 语句] [Mybatis 系列8-结合源码解析select.resultMap的用法] ...

  2. 牛客网剑指Offer——正则表达式匹配

    1. 题目描述 请实现一个函数用来匹配包括'.'和'*'的正则表达式.模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次). 在本题中,匹配是指字符串的所有字符匹配整 ...

  3. 第2章 GNS3和PacketTracer网络模拟器(1)_GNS3概述

    1. 安装和配置GNS3 1.1 GNS3概述 (1)GNS3是一款具有图形化界面,可运行在多平台(包括Windows.Linux.Mac OS等)上面的网络虚拟软件. (2)可以在虚拟环境中运行Ci ...

  4. Apache服务器下phalcon项目报Mod-Rewrite is not enabled问题

    问题如图: 项目已经按照官网的教程修改了.htaccess文件,仍旧报此错误,判断可能是apache未添加mod_rewrite,通过查询资料,经以下两步解决此问题: 1.执行sudo a2enmod ...

  5. spring启动找不到spring.liveBeansView.mbeanDomain配置

    做项目时,启动tomcat报错 JNDI lookup for name [spring.liveBeansView.mbeanDomain] threw NamingException with m ...

  6. Python并发编程一(多进程)

    1.背景知识(进程.多道技术) 顾名思义,进程即正在执行的一个过程.进程是对正在运行程序的一个抽象. 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一 ...

  7. HPUX and AIX SSH 互信

    HPUX side: su - orasid check file AIX side: su - sidadm double check

  8. for循环、in、not in

    for循环可以遍历集合中任意一个元素 1 a = ["hello", "world", "dlrb"] 2 for b in a: 3 pr ...

  9. linux 之 source命令:

    source命令: source命令也称为“点命令”,也就是一个点符号(.).source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录. 用法: source filen ...

  10. spark 常用技巧总结2

    zip拉链操作 def zip[U](other: org.apache.spark.rdd.RDD[U])(implicit evidence$10: scala.reflect.ClassTag[ ...