如何将向量值转换为适合 k-means 算法函数?

数据挖掘 聚类 k-均值
2021-10-14 15:35:19

我有一组用户对象,我想使用ķ- 表示他们的测验答案的功能。每个测验问题都有预定义的答案,其字母值为“a”、“b”、“c”、“d”如果用户用字母"b"回答问题 #1,我将此答案放入向量中(0,1,0,0). ķ-means 我必须使用的函数将二维数字数组作为输入向量(在本例中为数组 [用户] [问题]),我不知道如何使用它,因为,而不是数字代表用户对问题的回答的值,我有一个向量输入。如何将我的向量值转换为数字,以便我可以使用我的ķ- 表示功能?

2个回答

你有 95% 在那里,你只有一个挂断...

您正在执行的矢量化也称为二值化或单热编码您现在唯一需要做的就是分解所有这些向量并将它们视为单独的特征。

因此,不要将问题一个向量视为(0,0,1,0) 问题两个向量为 (0,1,0,0),您现在可以将它们视为单独的特征。

所以这:

-      q1,        q2
-      (a,b,c,d), (a,b,c,d)
user1  (0,0,1,0), (0,1,0,0)
user2  (1,0,0,0), (0,0,0,1)

变成这样:

-      q1a,q1b,q1c,q1d,q2a,q2b,q2c,q2d
user1  0   0   1   0   0   1   0   0
user2  1   0   0   0   0   0   0   1

您可以将这些二元特征中的每一个视为位于 8 维空间中的数据中的正交维度。

希望这可以帮助!

二维数组是向量列表,所以

{{userid1,1a,1b,1c,1d,2a,2b,2c,2d,...,na,nb,nc,nd}
{userid2,1a,1b,1c,1d,2a,2b,2c,2d,...,na,nb,nc,nd},
...,
{useridk,1a,1b,1c,1d,2a,2b,2c,2d,...,na,nb,nc,nd}}

n对于有问题和k参赛者的测试来说,这将是一个合适的输入,其中1a表示a对问题一的回答。