机器学习(五) ——k-近邻算法进一步探究

机器学习(五)——k-近邻算法进一步探究

(原创内容,转载请注明来源,谢谢)

一、概述

现采用k-近邻算法,进行分类应用。数据源采用《机器学习实战》提供的数据集,其中每个样本有3个特征值,约有1000个样本。

k近邻算法的基本思想,是根据现有的训练集,当新增一个需要判断的元素时,会计算该元素分别与现有的每个训练样本的距离。距离的计算公式是将该元素的3个特征值(本次实验是3个特征值),分别与每个样本3个对应特征值计算平方差,得到结果。距离公式如下图所示:

二、优化——归一化数值

1、背景

由于不同特征值对应的数值,本身大小差距很大,但是在考虑每个特征值时,可能每个特征值的权重是类似的,这样就会造成“不公平”。

例如:在评价一个篮球运动员的技术统计时,得分数差距(最多和最少)约40,失误数差距约4,不在一个量级,但是失误数量多5带来的负面因素远大于得分数多5,因此就形成了“不公平”。

此时,就需要用到归一化数值。

2、公式

归一化,即将每个数据都归到-1~+1的区间内,公式如下:

newvalue = (old value - min)/(max - min)

即,归一化后的结果等于原值与样本中该特征的最小值的差,除以样本中该特征最大值与最小值的差。

其中分子的算法,有的用到原值减去平均值,也有用到原值减去标准差,目的都在于把结果控制在-1~+1的区间。

3、归一化代码(python)

(为方便查看,用图片形式上传,步骤都已加注释)

三、实际应用

1)首先,需要将数据集取出,转成数组,当作样本,代码如下:

2)将数据归一化处理

即调用上述的autoNorm方法。

3)knn算法——计算距离、排序、取前k个、返回结果中分类最多的那个

4)测试算法效果

1-将文件取出,转成数组

2-数据归一化

3-将训练样本和测试数据集传入,计算误差率

返回结果如下:

经过计算,测试数据100个,误差5个,误差率5%

四、总结

经过编码过程,第一次正式接触机器学习的编程,几个感悟:

1、学习过程中,看书和视频同步进行,我看的视频偏理论,正好实战这本书是实践的,可以互相结合。

2、之前没怎么接触过python,现在接触,发现python真的是很轻巧灵活的,另外建议大家用python的时候,可以装anaconda管理工具。具体内容可以上网搜,装这个以后不需要再装python,在centos环境下,等于是一键安装。这个工具可以随意切换python版本,另外要下载python的库也非常方便。

3、python的numpy库,对于机器学习比较重要,在矩阵处理方面很灵活。

4、knn算法有个不足在于,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数,因此结果如果处于中立的情况下,更有可能是样本结果多的那个值。另外,knn算法由于不训练,是临时比较的,因此数据多的时候计算量很大。

——written by linhxx 2017.12.29

原文发布于微信公众号 - 决胜机器学习(phpthinker)

原文发表时间:2017-12-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据文摘

论文Express | 自然语言十项全能:转化为问答的多任务学习

Salesforce最新论文提出了一个可处理多项自然语言处理的通用模型:decaNLP,处理机器翻译、文本分类等NLP任务统统不在话下!

1422
来自专栏ATYUN订阅号

TensorFlow团队:TensorFlow Probability的简单介绍

在2018年TensorFlow开发者峰会上,我们(TensorFlow团队)宣布发布TensorFlow Probability:一种使机器学习研究人员及相关...

1345
来自专栏智能算法

10 种机器学习算法的要点(附 Python 和 R 代码)

本文由 伯乐在线 - Agatha 翻译,唐尤华 校稿。 英文出处:SUNIL RAY。欢迎加入翻译组。 前言 谷歌董事长施密特曾说过:虽然谷歌的无人驾驶汽车和...

4585
来自专栏IT派

六行代码!完成你的第一个机器学习算法

Google出了一个面向新手的机器学习教程,每集六七分钟,言简意赅,只掌握最基础的Python语法知识,便可以实现一些基本的机器学习算法。接下来我准备分几次...

3886
来自专栏大数据文摘

剑桥大学研究院总结:26条深度学习经验

2906
来自专栏机器学习算法工程师

机器学习论文笔记—如何利用高效的搜索算法来搜索网络的拓扑结构

分层表示高效的架构搜索(HIERARCHICAL REPRESENTATIONS FOR EFFICIENT ARCHITECTURE SEARCH)这篇文章讲...

1762
来自专栏机器之心

学界 | 循环神经网络自动生成程序:谷歌大脑提出「优先级队列训练」

2828
来自专栏Python中文社区

Python机器学习工具:Scikit-Learn介绍与实践

Scikit-learn 简介 官方的解释很简单: Machine Learning in Python, 用python来玩机器学习。 什么是机器学习 机...

2147
来自专栏人工智能头条

放弃 RNN/LSTM 吧,因为真的不好用!望周知~

2726
来自专栏CVer

[计算机视觉论文速递] 2018-05-24

这篇文章有5篇论文速递信息,涉及活体检测、SFM、视差估计、Zero-short Learning和3D shape等方向(含一篇CVPR 2018)。

1502

扫码关注云+社区

领取腾讯云代金券