kmeans处理分类变量

ljo96ir5  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(750)

我正在为一个大数据文件上的kmeans聚类算法编写一个mapreduce程序。每个观测值都由列组成,列中包含分类变量和数值变量。对于kmeans,在距离计算中不适合包含范畴变量。所以我们需要过滤出带有分类条目的列。
我的问题是:过滤带有字符的条目很容易,但是如果一个列只包含数字但被视为分类的(比如zipcode,id),该怎么办?
谢谢您!

xxe27gdn

xxe27gdn1#

删除所有的分类变量可能不是办法。您是否尝试将数据集转换为数字数据集?有不同的方法,但例如:
给定一个包含3个类别(黑色、白色和蓝色)的分类变量a(比如说颜色),可以用三个新的二进制变量(a_1、a_2、a_3)替换数据集中的a。对于一个给定的对象,这些新的二进制变量中只有一个应该等于一,其他的都应该为零。所以,如果一个物体的a=black,那么a_1=1,a_2=0,a_3=0。
你仍然需要标准化这些新的变量。有不同的方法。。。你可以试试a_1=a_1-均值(a_1)(频率)。

相关问题