【发布时间】:2019-02-16 00:35:56
【问题描述】:
我正在为大型数据文件上的 Kmeans 聚类算法编写一个 mapreduce 程序。每个观察都由包含分类变量和数值变量的列组成。对于 Kmeans,不适合在距离计算中包含分类变量。所以我们需要过滤掉带有分类条目的列。
我的问题是:过滤掉带有字符的条目很容易,但是如果一列只包含数字但被视为分类(例如邮政编码、ID)怎么办?
谢谢!
【问题讨论】:
我正在为大型数据文件上的 Kmeans 聚类算法编写一个 mapreduce 程序。每个观察都由包含分类变量和数值变量的列组成。对于 Kmeans,不适合在距离计算中包含分类变量。所以我们需要过滤掉带有分类条目的列。
我的问题是:过滤掉带有字符的条目很容易,但是如果一列只包含数字但被视为分类(例如邮政编码、ID)怎么办?
谢谢!
【问题讨论】:
删除所有分类变量可能不是要走的路。您是否尝试将数据集转换为数值数据集?有不同的方法,但例如:
给定一个包含(比如说)3 个类别(黑色、白色和蓝色)的分类变量 a(比如说颜色),您可以将数据集中的 a 替换为三个新的二进制变量(a_1、a_2、a_3)。 对于给定的对象,这些新的二进制变量中只有一个应该等于 1,所有其他的应该为零。 所以,如果一个对象有 a=black,那么 a_1=1, a_2=0, a_3=0。
您仍然需要标准化这些新变量。有不同的方法...您可以尝试 a_1=a_1-mean(a_1) (频率)。
【讨论】: