基于分类变量的聚类?

数据挖掘 聚类
2021-09-30 23:53:52

我正在做一个项目,目前正在试验聚类分析。数据集主要是分类变量和离散数字。由于我对 MathJax 不是很熟悉,请原谅我的编程能力不佳,但我将在以下三个示例中尝试用文字总结数据集。

  1. 假设第 1 列当然是参与者姓名,从第 2 列到第 5 列,每列的值范围从 1(最不重要)到 5(最重要)。所以在这种情况下,第 2-8 列只有离散数据。
  2. 例如第 6 列,因为这是一道选择题。第 1 行选择“nice”作为答案,但是,第 2 行选择了“poor”。在这种情况下,我们有一列包含多个分类答案。
  3. 对于第 7-9 列,这是另一种类型的多项选择题。然而这一次,每一列只代表一个答案。第 7 列只允许字符串值“true”,第 8 列只允许字符串“somewhat”。所以在这种情况下,我们有多个列代表同一问题的多个答案。

任何想法如何解决这个问题?感谢任何输入!

A2       A3       A4       A5       A6       A7         A8         A9
1        4        5        4        nice     true       somewhate  false
2        4        3        1        poor     true                  false
1        5        2        1        nice                somewhate    
3        2        1        5        nice     true                  false
1个回答

我假设你的数据集就像

A0 A1 A2 B0 B1 B2
1  0  0  1  1  0
0  1  0  0  0  1
0  1  0  0  1  1
      ...

其中A0指问题A的答案,选项0和问题A是单选题,B是允许多个答案的问题。每行代表一个记录。

对于这种数据格式,每一列都可以视为一个维度(如果某些列可以量化为一个值,则可以将它们分组为一列,例如“Like = 1, Neutral = 0, Dislike = -1”)然后应用聚类算法,例如 K-mean 对其进行聚类。

请说明您的数据集格式是否与我的假设不同。

6月30日更新:

这个想法是量化变量,对于第 2-5 列,值已经量化为 [1, 5] 对于第 5 列,它允许(“差”/“好”)。尽管它们是字符串,但它们代表了不同大小的偏好。它们也可以转换为 "poor" = 0, "nice" = 1。对于第 7-9 列,因为它是二元期权,它们也可以很容易地转换为 ex。“真” = 0,“” = 1。

然后,您将有一个矩阵:

1    4    5    4    1    1    1    1
2    4    3    1    0    1    0    1
1    5    2    1    1    0    1    1
3    2    1    5    1    1    0    1

Remark1:对于二元期权,例如第 9 列,只允许“False”或“null”,选择“False”=1 或 0 无关紧要。在分类中,只有距离很重要。

Remark2:如果你有一列允许不同的字符串,例如“apple”、“banana”、“orange”,你可以将它转换为一个热向量。前任。

A
apple
orange
orange
banana

可以转换为

A0   A1   A2
1    0    0
0    0    1
0    0    1
0    1    0

其中 A0、A1、A2 分别代表“苹果”、“香蕉”和“橙子”。

备注3:如果有一列允许存储多个答案,例如。

A
apple
apple orange
orange
orange banana

可以转换为 A0 A1 A2 1 0 0 1 0 1 0 0 1 0 1 1

Remark4:在应用一些分类算法如K-mean之前,最好对每个维度的大小进行归一化处理。例如,第 9 列的值为 [0, 1] 可以按 5 次归一化为 [0, 5]。维度的因素/范围反映了该因素的重要性。

我希望我的回答能有所帮助。