公号:码农充电站pro 主页:https://codeshellme.github.io 上篇文章介绍了KNN 算法的原理,今天来介绍如何使用KNN 算法识别手写数字? 1,手写数字数据集 手写数字数据集是一个用于图像处理的数据集,这些数据描绘了 [0, 9] 的数字,我们可以用KNN 算法来识别这些数字. MNIST 是完整的手写数字数据集,其中包含了60000 个训练样本和10000 个测试样本. sklearn 中也有一个自带的手写数字数据集: 共包含 1797 个数据样本,每个样本描绘了…
import numpy as np import operator import random import os def file2matrix(filePath):#从文本中提取特征矩阵和标签 f = open(filePath,'r+').readlines() fileLength = len(f) dataSet = np.zeros((fileLength,3),np.float64) labelList = [] for i in range(fileLength): row =…
KNN项目实战——改进约会网站的配对效果 1.项目背景: 海伦女士一直使用在线约会网站寻找适合自己的约会对象.尽管约会网站会推荐不同的人选,但她并不是喜欢每一个人.经过一番总结,她发现自己交往过的人可以进行如下分类: 不喜欢的人 魅力一般的人 极具魅力的人 2.项目数据  海伦收集约会数据已经有了一段时间,她把这些数据存放在文本文件datingTestSet.txt中,每个样本数据占据一行,总共有1000行. datingTestSet.txt数据集下载  海伦收集的样本数据主要包含以下3种特征…
秒懂机器学习---k-近邻算法实战 一.总结 一句话总结: k临近算法的核心就是:将训练数据映射成k维空间中的点 1.k临近算法怎么解决实际问题? 构建多维空间:每个特征是一维,合起来组成了一个多维空间 训练数据映射成多维空间的点:每一条训练数据就是多维空间的一个点,我需要找的就是离我测试数据最近的n个点 2.k临近算法怎么做垃圾邮件分类? 常用词表构成多维空间:一个常用词表,这个词表里面的每一个词就是特征,大概6000个词, 训练数据映射成多维空间的点:每一条训练数据都是这个6000维空间的一…
一.概述 [定义]如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别. 二.距离计算公式 两个样本的距离可以通过如下公式计算,又叫[欧式距离] 设有特征,a(a1,a2,a3),b(b1,b2,b3),那么: \[\sqrt{(a1-b1)^{2}+(a2-b2)^{2}+(a3-b3)^{2}}\] 三.sklearn k-近邻算法API sklearn.neighbors.KNeighborsClassifier(n_neighb…
实验设备与软件环境 硬件环境:内存ddr3 4G及以上的x86架构主机一部 系统环境:windows 软件环境:Anaconda2(64位),python3.5,jupyter 内核版本:window10.0 实验内容和原理 (1)实验内容: 使用k近邻算法改进约会网站的配对效果.海伦使用约会网址寻找适合自己的约会对象,约会网站会推荐不同的人选.她将曾经交往过的的人总结为三种类型:不喜欢的人.魅力一般的人.极具魅力的人.尽管发现了这些规律,但依然无法将约会网站提供的人归入恰当的分类.使用KNN算…
使用kNN算法进行分类的原理是:从训练集中选出离待分类点最近的kkk个点,在这kkk个点中所占比重最大的分类即为该点所在的分类.通常kkk不超过202020 kNN算法步骤: 计算数据集中的点与待分类点之间的距离 按照距离升序排序 选出距离最小的kkk个点 计算这kkk个点所在类别出现的频率(次数) 返回出现频率最高的点的类别 代码的实现: 首先导入numpy模块和operator模块,建立一个数据集 from numpy import * import operator def createD…
使用Python实现k-近邻算法的一般流程为: 1.收集数据:提供文本文件 2.准备数据:使用Python解析文本文件,预处理 3.分析数据:可视化处理 4.训练算法:此步骤不适用与k——近邻算法 5.测试算法:使用海伦提供的部分数据作为测试样本.测试样本与非测试样本的区别在于:测试样本是已经完成分类的数据,如果预测分类与实际类别不一样,则标记为一个错误. 6.使用算法:产生简单的命令行程序,然后海伦可以输入一些特征数据来判断对方是否为自己喜欢的类型. 一.数据集介绍: 海伦女士一直使用在线约会…
机器学习实战这本书是基于python的,如果我们想要完成python开发,那么python的开发环境必不可少: (1)python3.52,64位,这是我用的python版本 (2)numpy 1.11.3,64位,这是python的科学计算包,是python的一个矩阵类型,包含数组和矩阵,提供了大量的矩阵处理函数,使运算更加容易,执行更加迅速. (3)matplotlib 1.5.3,64位,在下载该工具时,一定要对应好python的版本,处理器版本,matplotlib可以认为是python…
改章节笔者在深圳喝咖啡的时候突然想到的...之前就有想写几篇关于算法代码的文章,所以回家到以后就奋笔疾书的写出来发表了 前一段时间介绍了Kmeans聚类,而KNN这个算法刚好是聚类以后经常使用的匹配技巧.我们都知道python中有Numby和Scipy这两个库,还有前段时间写的matplot库,绘图用的,大家可以参考下,实际这个算法是看懂之前的一些算法的实现. 上面我就简单介绍下这个算法实现,首先我们先肯定一个事前准备好的矩阵,这个多是事前聚类出来的或者通过专家估计出来的值. 为了这个分类矩阵和…