【问题标题】:Kmeans Cluster for each group in pandas dataframe and assign clusters熊猫数据框中每个组的Kmeans集群并分配集群
【发布时间】:2021-07-24 09:08:47
【问题描述】:

我想使用 kmeans 聚类将 X2 和 X3 聚类为组月份。我需要将两个变量组合在一起。此外,我想根据每个集群的平均值将集群 0、集群 1 和集群 2 分配给“强”、“平均”、“弱”,最高意味着强集群。下面是我的示例数据集。

df=pd.DataFrame({'month':['1','1','1','1','1','2','2','2','2','2','2','2'],'X1': 
[30,42,25,32,12,10,4,6,5,10,24,21],'X2':[10,76,100,23,65,94,67,24,67,54,87,81],'X3': 
[23,78,95,52,60,76,68,92,34,76,34,12]})
df

我需要自动化这个,从那以后我有很多列,我想在 2 个列 (df.loc[:,2:3]) 上执行此操作。将簇分配给每个 def 是

集群 2="最佳"

集群 1="平均"

集群 0="弱"

要找到最好的集群,找到每列的平均值,然后求和,如果它是最高的,然后将其分配给“最佳”,将其分配给“最佳”,将其分配给平均,最低分配给“弱”

请帮忙谢谢

【问题讨论】:

  • 你能详细说明.Also I would like to assign cluster 0 ,cluster 1 and cluster 2 to "strong","average","weak" according to the mean of each cluster 吗?
  • 是的,先生,在找到集群后找到每个集群的每一列的平均值(df.loc[:,2:3]),如果它是最高的,则将其称为“最佳”集群跨度>

标签: python pandas dataframe cluster-computing k-means


【解决方案1】:

groupbyapply 一个聚类函数

我们可以按month 对数据框进行分组,并使用自定义的聚类函数对X2X3 列进行聚类

cols = df.columns[2:4]
mapping = {0: 'weak', 1: 'average', 2: 'best'}

def cluster(X):
    k_means = KMeans(n_clusters=3).fit(X)
    return X.groupby(k_means.labels_)\
            .transform('mean').sum(1)\
            .rank(method='dense').sub(1)\
            .astype(int).to_frame()

df['Cluster_id'] = df.groupby('month')[cols].apply(cluster)
df['Cluster_cat'] = df['Cluster_id'].map(mapping)

   month  X1   X2  X3  Cluster_id Cluster_cat
0      1  30   10  23           0        weak
1      1  42   76  78           1     average
2      1  25  100  95           2        best
3      1  32   23  52           0        weak
4      1  12   65  60           1     average
5      2  10   94  76           2        best
6      2   4   67  68           2        best
7      2   6   24  92           1     average
8      2   5   67  34           0        weak
9      2  10   54  76           2        best
10     2  24   87  34           0        weak
11     2  21   81  12           0        weak

【讨论】:

  • Shubham 我需要集群不是为每个变量而是为两个变量一个集群谢谢
  • 我们是否需要结合X2X3进行聚类?
  • 但仍然得到 X2_cluster 和 X3_cluster 谢谢
  • 很好的答案!简洁有效!
  • 是的,准确地找到每个集群每月 X2 和 X3 的平均值,然后将 X2 和 X3 的平均值相加并确定最佳集群
猜你喜欢
  • 2011-01-20
  • 2017-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-04
  • 2023-03-22
相关资源
最近更新 更多