KMeans Clustering using Python(KMeans表示使用Python进行集群)
本文介绍了KMeans表示使用Python进行集群的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个数据集
Name System
A AZ
A NaN
B AZ
B NaN
B NaN
C AY
C AY
D AZ
E AY
E AY
E NaN
F AZ
F AZ
F NaN
使用此数据集时,我需要根据";系统&为特定";名称&Quot;重复的次数对数据集进行群集。
在上面的示例中,名称A、B和D有一个子集,而C、E有两个子集,F有两个AZ,因此它是一个不同的集群。
输出示例:
Cluster Names
AZ A,B
AY,AY C,E
AZ,AZ F
PS。实际数据集的行数和列数可能不同 如何使用基于ML的聚类算法(如KNN、朴素贝叶斯等)来实现这一点? 我需要两种方法,一种不忽略NaN,另一种忽略NaN。
推荐答案
IIUC,这看起来像一个双倍groupby。您首先需要按名称和系统进行分组,并聚合系统以形成集群。则这是一个简单的groupby,聚合为字符串。
(df.groupby(['Name', 'System'])
['System'].agg(Cluster=','.join) # clusters of repeats
.droplevel('System').reset_index()
.groupby('Cluster')['Name'].agg(','.join) # aggregate by cluster
.reset_index()
)
输出:
Cluster Name
0 AY,AY C,E
1 AZ A,B,D
2 AZ,AZ F
Nb。我在这里使用了','.join聚合,但您也可以使用tuple或自定义函数(第一个groupby)和frozenset(第二个groupby)来保持对单个元素的访问
(df.groupby(['Name', 'System'], dropna=False)
['System'].agg(Cluster=lambda x: (x.iloc[0], len(x)))
.droplevel('System').reset_index()
.groupby('Cluster')['Name'].agg(frozenset)
.reset_index()
)
输出:
Cluster Name
0 (AY, 2) (E, C)
1 (AZ, 1) (B, A, D)
2 (AZ, 2) (F)
3 (nan, 1) (E, F, A)
4 (nan, 2) (B)
这篇关于KMeans表示使用Python进行集群的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
编程基础网
本文标题为:KMeans表示使用Python进行集群
基础教程推荐
猜你喜欢
- 将 x 轴刻度更改为自定义字符串 2022-01-01
- 尝试制作WhatsApp机器人 2022-01-01
- pyserial - 可以从线程 a 写入串行端口,是否阻塞从线程 b 读取? 2022-01-01
- 由Python将MP3转换为MIDI(类型错误:无法加载插件:mtg-Melodia:Melodia) 2022-01-01
- numpy float:比算术运算中内置的慢 10 倍? 2022-01-01
- 与常规 dict 相比,Python manager.dict() 非常慢 2022-01-01
- Discord.py 缺少必需的参数 2022-01-01
- 使用生成器和迭代器时 Python 多循环失败 2022-01-01
- 用 Python 编写 Fortran 无格式文件 2022-01-01
- 在 Celery 工作人员中捕获 Heroku SIGTERM 以优雅地关 2022-01-01
