机器学习算法 - 最近邻规则分类KNN
上节介绍了机器学习的决策树算法,它属于分类算法,本节我们介绍机器学习的另外一种分类算法:最近邻规则分类KNN,书名为【k-近邻算法】。
KNN算法的工作原理是:将预测的目标数据分别跟样本进行比较,得到一组距离的数据,取最近的K个数据,遵循少数服从多数的原则,从而获得目标数据的分类。
简单的说,就是【近朱者赤,近墨者者黑】,下面我们一起通过KNN算法来演示这句名言的内涵。
【案例背景】
我的一个表弟,自幼聪明过人,读书的时候称得上名列前茅,父母以此为骄傲。但是好景不长,自从参加工作后,结识了几个狐朋狗友,从此进入了堕落的生活,名声也臭名远扬。
家里人经分析,主要是环境影响人,让他尽快远离他那些所谓的哥们朋友,多结识些正能量有思想有理想的人,也在此祝他成功吧~
【代码演示】
from sklearn import neighbors
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap #加上这句 #构造800个随机分布的点
X1 = np.random.randint(0, 500, (250, 2))
X2 = np.random.randint(500, 1000, (250, 2))
X3 = np.random.randint(0, 1000, (300, 2)) #这里添加一些杂点
X = np.concatenate((X1, X2, X3), axis=0) #初始化数据,用0和1表示结果
y = np.ones(800, dtype=np.int)
y[0:250] = 0
y[500:650] = 0 #KNN算法核心语句,其中k=15
clf = neighbors.KNeighborsClassifier(15, weights='uniform')
clf.fit(X, y) #显示预测结果
test_x1 = 400
test_y1 = 400
test_x2 = 600
test_y2 = 600
x = np.array([[test_x1, test_y1]])
Z = clf.predict(x)
print('蓝色方块归类:', Z)
x = np.array([[test_x2, test_y2]])
Z = clf.predict(x)
print('蓝色三角归类:', Z) #将数据图形化显示, 结果0用红色显示,1用黑色显示
cmap_bold = ListedColormap(['#ff6666', '#919191'])
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=cmap_bold, edgecolor='k', s=30)
plt.scatter([test_x1], [test_y1],marker='s', color='#224EFF', s= 300)
plt.scatter([test_x2], [test_y2], marker='^', color='#224EFF', s= 300)
plt.show()
【运行结果】
蓝色方块归类: [0]
蓝色三角归类: [1]
OK, 本讲到此结束,后续更多精彩内容,请持续关注我的博客。
本文为原创文章,请珍惜作者的劳动成果,转载请注明出处。
机器学习算法 - 最近邻规则分类KNN的更多相关文章
- 机器学习--最邻近规则分类KNN算法
理论学习: 3. 算法详述 3.1 步骤: 为了判断未知实例的类别,以所有已知类别的实例作为参照 选择参数K 计算未知实例与所有已知实例的距离 选 ...
- 最近邻规则分类(k-Nearest Neighbor )机器学习算法python实现
综述 Cover和Hart在1968年提出了最初的近邻算法 是分类(classification)算法 输入基于实例的学习(instance-based learning),惰性学习(lazy lea ...
- 机器学习:最近邻规则KNN算法
这个算法就比较简单易懂了 就是把每个向量的特征值抽象成坐标,寻找最近的k个点,来进行划分 代码如下 #include <iostream> #include <cstdio> ...
- 最邻近规则分类KNN算法
例子: 求未知电影属于什么类型: 算法介绍: 步骤: 为了判断未知实例的类别,以所有已知类别的实例作为参照 选择参数K 计算未知实例与所有已知实例的距离 选择最近K个已 ...
- 每日一个机器学习算法——k近邻分类
K近邻很简单. 简而言之,对于未知类的样本,按照某种计算距离找出它在训练集中的k个最近邻,如果k个近邻中多数样本属于哪个类别,就将它判决为那一个类别. 由于采用k投票机制,所以能够减小噪声的影响. 由 ...
- # 机器学习算法总结-第一天(KNN、决策树)
KNN算法总结 KNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别.(监督) k近邻算法(knn)是一种基本的分类与回归的算法,k-mea ...
- 如何解读「量子计算应对大数据挑战:中国科大首次实现量子机器学习算法」?——是KNN算法吗?
作者:知乎用户链接:https://www.zhihu.com/question/29187952/answer/48519630 我居然今天才看到这个问题,天……本专业,有幸听过他们这个实验的组会来 ...
- 机器学习算法笔记1_2:分类和逻辑回归(Classification and Logistic regression)
形式: 採用sigmoid函数: g(z)=11+e−z 其导数为g′(z)=(1−g(z))g(z) 如果: 即: 若有m个样本,则似然函数形式是: 对数形式: 採用梯度上升法求其最大值 求导: 更 ...
- scikit-learn中的机器学习算法封装——kNN
接前面 https://www.cnblogs.com/Liuyt-61/p/11738399.html 回过头来看这张图,什么是机器学习?就是将训练数据集喂给机器学习算法,在上面kNN算法中就是将特 ...
随机推荐
- JavaBean编辑器的简单介绍
引言 Sun所指定的JavaBean规范很大程度上是为IDE准备的--它让IDE能够以可视化的方式设置JavaBean的属性.如果在IDE中开发一个可视化的应用程序,则需要通过属性设置的方式对组成应用 ...
- C#导出.csv格式的excel表
.cs文件直接贴代码: using System; using System.Collections.Generic; using System.Data; using System.IO; usin ...
- 理解JDK1.5的自动装箱拆箱
JDK1.5的升级引入了装箱和拆箱概念,简单说就是为了简化书写. JDK1.5之前,创建Integer对象是需要这么写的 Integer i = new Integer("3") ...
- IP核之初——FIFO添加以太网MAC头部
本文设计思路源自明德扬至简设计法.在之前的几篇博文中,由于设计比较简单,所有的功能都是用verilogHDL代码编写实现的.我们要学会站在巨人的肩膀上,这时候就该IP核登场了! 说白了,IP核就是别人 ...
- 快速部署MongoDB
MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.本文安装的版本为3.0,其他版本可对照. 设置mongodb repo vi /e ...
- 利用python基于微博数据打造一颗“心”
一年一度的虐狗节将至,朋友圈各种晒,晒自拍,晒娃,晒美食,秀恩爱的.程序员在晒什么,程序员在加班.但是礼物还是少不了的,送什么好?作为程序员,我准备了一份特别的礼物,用以往发的微博数据打造一颗&quo ...
- 工控SCADA模型 基于HTML5 Canvas WebGL制作摩托车
工业方面制作图表,制作模型方面运用到 3d 模型是非常多的,在一个大的环境中,构建无数个相同的或者不同的模型,构建起来对于程序员来说也是一件相当头疼的事情,我们利用 HT 帮大家解决了很大的难题,以下 ...
- Selenium WebDriver 中鼠标和键盘事件分析及扩展[转载]
原文:http://www.ibm.com/developerworks/cn/java/j-lo-keyboard/ 概念 在使用 Selenium WebDriver 做自动化测试的时候,会经常模 ...
- WPF TextBox按字节长度限制输入
前两天做一个项目的时候,由于页面没有限制TextBox的输入长度,所以,后台直接报错了,超出数据库最大的长度. 数据库的长度是按照字节来计算的,而且不同的编码格式,汉字占用的字节长度又不相同,比如,我 ...
- ⒃bootstrap组件 轮播图 基础案例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...