我正在为一个大数据文件编写一个用于Kmeans聚类算法的mapreduce程序。每个观察由包括分类和数字变量的列组成。对于Kmeans,在距离计算中包括分类变量是不合适的。因此,我们需要过滤掉带有分类条目的列。
我的问题是:过滤带有字符的条目很容易,但是如果列只包含数字但被视为分类(例如Zipcode,ID)会怎么样?
谢谢!
答案 0 :(得分:0)
删除所有分类变量可能不是可行的方法。您是否尝试将数据集转换为数值数据集?有不同的方法,但例如:
给定一个包含(比如说)3个类别(黑色,白色和蓝色)的分类变量a(比如颜色),您可以用三个新的二进制变量(a_1,a_2,a_3)替换数据集中的a。 对于给定对象,这些新二进制变量中只有一个应该等于1,所有其他变量应该为零。 因此,如果对象的a =黑色,则a_1 = 1,a_2 = 0,a_3 = 0.
您仍然需要标准化这些新变量。有不同的方法......你可以尝试a_1 = a_1-mean(a_1)(频率)。