聚类以实现异构组

时间:2019-05-23 21:46:32

标签: machine-learning scikit-learn cluster-analysis

我想基于分类变量(可以是低,中或高)将100个用户分组。组的大小应为3。假设用户分布均匀,我想在组内获得最大的异构性。我想知道是否可以使用一些聚类算法根据相似性进行分组?有什么建议吗?

1 个答案:

答案 0 :(得分:2)

我不认为您需要一种聚类算法来根据分类变量对数据进行分组。

根据您的问题,我认为这应该可行。

# Code
from sklearn.model_selection import train_test_split

group1, group23 = train_test_split(data, test_size=2/3., stratify=data['lab'])
group2, group3 = train_test_split(group23, test_size=1/2., stratify=group23['lab'])

Stratify确保为给定的categorical value保持最大的异构性。

# Sample output

print(data)
   val1  val2 lab
0     1     1   L
1     2     2   L
2     3     3   L
3     4     4   M
4     5     5   M
5     6     6   M
6     7     7   H
7     8     8   H
8     9     9   H

print(group1)
   val1  val2 lab
4     5     5   M
1     2     2   L
6     7     7   H

print(group2)
   val1  val2 lab
8     9     9   H
2     3     3   L
3     4     4   M

print(group3)
   val1  val2 lab
0     1     1   L
7     8     8   H
5     6     6   M

train_test_split() Documentation