1、若样本中存在离散数据,knn是不是就不适用了呢?2、后面的课程大约本月几号上线?

来源:4-9 更多有关k近邻算法的思考

XhmTLnz丶

2018-01-22

离散数据怎么求距离

写回答

1回答

liuyubobobo

2018-01-22

这个课程由于不很强调数据预处理,所以对这个阶段的数据处理工作介绍不多。


具体来说,对于离散数据,也要具体问题具体分析:

首先,专业来讲,我们说的“离散数据”,叫“Categorical Variable”,中文可以翻译为“分类变量”。


1)有一种分类变量,虽然是分类变量,但是类别之间存在顺序关系。比如,对于房产,可能有一个属性是:周边地铁站的情况,会以分为“挨着地铁站”;“步行可达地铁站”;”必须坐车才能到地铁站“三种可能。那么此时,将“挨着地铁站”映射为0;“步行可达地铁站”映射为1;”必须坐车才能到地铁站“映射为2,是合理的。同理,学生的成绩优良中差;或者信用评级ABCD;等等等等,都是分类变量,但是我们可以直接将它映射为数字变量。


2)另外一种分类变量,类别之间没有顺序关系。比如,对于房产的”城市“这个属性;车辆的”颜色“,”型号“等等属性;体检数据中的”血型“属性,等等等等。对于这种分类变量,我们需要对数据进行预处理。常见的预处理方式是使用OneHotEncoder的方式。简单来说,就是把一个分类变量的所有分类展开。分类变量有几种可能,就展成几个属性。对于每个属性,只填写0或者1。


比如对于”血型“这个属性,他有”A“,”B“,”AB“,”O“四种可能。我们就将这个”血型“特征,转换成”是否是A“,”是否是B“,”是否是AB“,”是否是O“四个特征。简单示例如下:

+-Blood-Type-+        +- A? -+- B? -+- AB? -+- O? -+
+------------+        +------+------+-------+------+
+     A      +        +  1   +   0  +   0   +   0  +  
+------------+        +------+------+-------+------+
+     B      +        +  0   +   1  +   0   +   0  +
+------------+   =>   +------+------+-------+------+
+     AB     +        +  0   +   0  +   1   +   0  +
+------------+        +------+------+-------+------+
+     O      +        +  0   +   0  +   0   +   1  +
+------------+        +------+------+-------+------+


这样转换之后,再使用距离就可以了:)


对于一个数据,既有数字变量,又有分类变量,处理方式可以参见这里:https://coding.imooc.com/learn/questiondetail/39047.html


----


后续课程会在本月逐渐更新完毕。谢谢支持:)加油!


1
2
liuyubobobo
回复
XhmTLnz丶
抱歉,由于课程时间限制,决策树不会做底层编写。我争取在课程完结后,写一个补充代码,完成决策树的底层编写。
2018-01-22
共2条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5839 学习 · 2437 问题

查看课程