Kmeans 对 pandas 数据框中的每个组进行聚类并分配聚类

2023-11-30

我想通过使用 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=“弱”

要找到最佳簇,请找到每列的平均值,然后求和,如果最高则将其分配给“最佳”,较低的分配给平均,最低的分配给“弱”

请帮忙谢谢


groupby and apply聚类函数

我们可以通过以下方式对数据框进行分组month并对列进行聚类X2 and X3使用自定义的聚类函数

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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kmeans 对 pandas 数据框中的每个组进行聚类并分配聚类 的相关文章

随机推荐

  • Python:Plt 条形图 - 不同颜色

    在Python中 我怎样才能使 reported 绿色条形 以及 UNREPORTED 酒吧红色 我想为图表中每个已报告和未报告的条形赋予不同的颜色 new AXIN 37 reported LGR 30 UNREPORTED NKD 24
  • YouTube iframe 事件

    我尝试捕获 YouTube iframe 的事件 http lab joergpfeiffer de videofull youtube php 所以我首先调用api 我设置了 iframe
  • 具有重复的递归排列

    我正在尝试编写一个递归函数 该函数通过给定列表的重复来获取所有排列 Eg set ABC 1 AAA 2 AAB 3 AAC 4 ABA N CCC 我想要此代码的递归版本 以便我可以获得任何大小的集合的排列 for i 0 i
  • 0..9 约束在 GCC 内联汇编中起什么作用?

    手册 says 允许使用与指定操作数编号匹配的操作数 如果一个数字 在同一个选项中与字母一起使用 数字应该放在最后 我不确定这意味着什么 示例代码 asm volatile swap 0 r value 0 value 堆栈溢出的内联汇编标
  • Chrome 扩展程序仅在单击某些网页时起作用

    我正在尝试让我的 Chrome 扩展程序在用户打开时弹出警报http google com 并单击扩展图标 我有以下清单 manifest version 2 name One Megahurt version 0 1 permission
  • 我想制作一个像 WhatsApp 个人资料照片对话框屏幕一样的对话框屏幕

    大家好 我目前正在尝试使用隐式意图创建一个对话框 我想在其中显示我的对话框 例如 WhatsApp 个人资料照片屏幕 并且在此屏幕中 WhatsApp 使用名为 删除照片 的额外字段 当我尝试制作相同类型的屏幕对话框时 我无法添加此额外字段
  • 如何更改 vue-cli 的分隔符?

    我安装了 vue cli webpack simple src main js import Vue from vue import App from App vue new Vue delimiters here delimiters s
  • 为 Javascript 制作文件

    有人可以告诉我如何使用 make 文件来组合和合并不同的 javascript 文件 我见过许多不同的项目使用不同的 javascript 文件 后来使用 MAKE 实用程序进行合并 Deep None
  • Java Swing —— 编写一个可根据自定义数据对象的更改重新绘制自身的 Ui

    首先 我已经发布了一个问题earlier其中我曾就为什么我的代码无法工作而寻求帮助 并且这个问题是根据我在该问题中得到的建议采取的 我的用例是这样的 我正在写一个MethodEditor模块其中每个Method由具有 2 个数据成员的自定义
  • spring在使用aop类级别注释时为错误的类创建代理

    当使用 spring AOP 和类级别注释时 springcontext getBean似乎总是为每个类创建并返回一个代理或拦截器 无论它们是否有注释 此行为仅适用于类级别注释 对于方法级别的注解 或者执行切入点 如果不需要拦截 getBe
  • 使用python的pillow库:如何在不创建图像的绘制对象的情况下绘制文本

    下面的代码展示了如何通过创建绘图对象在图像上写入文本 from PIL import Image ImageFont ImageDraw image Image new mode RGBA size 500 508 draw ImageDr
  • 有没有办法阻止 VB6 编译器打乱文件内容?

    由于未知的原因 VB6 编译器通常喜欢重新排序 vbp 文件的内容和 frm 文件顶部的控件描述符块 描述表单上控件属性的代码 您在IDE 但您确实可以在文本编辑器中看到在版本控制中与先前版本进行比较时 在比较文件的修订版本时 这非常烦人并
  • 有没有一种算法可以告诉两个短语的语义相似度

    输入 短语 1 短语 2 输出 语义相似度值 0到1之间 或者这两个短语谈论同一件事的概率 您可能想查看这篇论文 基于语义网络和语料库统计的句子相似度 PDF 我已经实现了所描述的算法 我们的背景非常笼统 实际上是任何两个英语句子 我们发现
  • 如何在 SWI-Prolog 中扩展结果列表?

    length L 25 L G245 G248 G251 G254 G257 G260 G263 G266 G 269 如果我在长度谓词后使用 write L 那么解释器会打印列表两次 一次扩展 另一次不扩展 深度有限制 防止输出过长 您可
  • 使用 Ruby 对字符串中的字符进行转义

    给定以下格式的字符串 Posterous API 以这种格式返回帖子 s u003Cp u003E 我怎样才能将它转换为实际的ascii字符 这样s p 在 OSX 上 我成功地使用了Iconv iconv ascii java s 但一旦
  • 使用 Spring AOP 触发了哪个接口(扩展 CrudRepository)的删除方法?

    Repository public interface UserRepository extends JpaRepository
  • Visual Studio 不再打开 Winforms 的图形编辑器

    我正在构建非常小的 15 分钟应用程序 它可以帮助我和我的同事完成简单的日常业务工作 为此 我经常使用 WinForm 因为它非常快 只需制作一个带有 2 个文本框和一个提交按钮的窗口 不幸的是 最近我想我按下了一个按钮 图形编辑器将不再打
  • 如何在android中获取准确的UTC时间戳

    我不知道哪一个适合获取 UTC 时间 我的代码是 System currentTimeMillis 对于 java 安卓 国际化的结果正确吗 也许用户可以更改设备时间并且结果会有所不同 对UTC有影响吗 在Linux平台上 系统时钟应设置为
  • 在本地 NTFS 驱动器上查找回收站

    我正在尝试编写一些简单的代码 该代码将返回本地驱动器上回收站的目录 看起来很简单 谷歌上应该有一千个答案 还没找到 我发现 FAT 和 NTFS 驱动器具有不同的基本名称 RECYCLED 和 RECYCLER 我发现 回收站 是一个虚拟文
  • Kmeans 对 pandas 数据框中的每个组进行聚类并分配聚类

    我想通过使用 kmeans 聚类对组月的 X2 和 X3 进行聚类 我需要对两个变量进行聚类 另外 我想根据每个簇的平均值将簇 0 簇 1 和簇 2 分配为 强 平均 弱 最高意味着强簇 下面是我的示例数据集 df pd DataFrame