【发布时间】:2021-05-21 06:02:03
【问题描述】:
我正在开发一个 kMeans AI 来确定任何一天的季节 为此,我有一个包含 4 列数据的数组 这就是它的样子(虽然它更长):
['0.2742330338168506' '0' '1.3694492732480696' 'winter']
['0.28529288153011745' '0' '1.3805091209613365' 'lente']
['0.28595917620794253' '1' '1.3811754156391616' 'winter']
['0.2874392369724381' '2' '1.3826554764036572' 'lente']
['0.316557712713994' '2' '1.411773952145213' 'herfst']
['0.32113534393276466' '3 '1.4163515833639837' 'lente']
['0.3231108855082745' '3' '1.4220488660040091' 'lente']
['0.3163219663513872' '3' '1.4288377851608964' 'winter']
['0.31201423701381703' '4' '1.4331455144984666' 'lente']
['0.3081781460867783' '4' '1.4369816054255053' 'lente']
['0.29534720251567403' '4' '1.4498125489966096' 'winter']
现在我知道如何在整个数组中找到最常见的项目,就像这样
Counter(array.flat).most_common()
但是对于这个,我需要每个簇第 4 列中最常见的项目,即第二列中的值,除了制作一个长 for 循环并将它们全部计数之外,还有更简单的方法吗?
【问题讨论】:
-
尝试将其放入带有列('a'、'b'、'c'、'd')的 pandas df 中,然后运行:
import pandas as pd;df.groupby('b')['d'].agg(pd.Series.mode) -
@Matt 看看为什么 mode() 不能与 groupby() 一起工作:github.com/pandas-dev/pandas/issues/13809
-
这很有趣,也许只需将其更改为可以使用的模式功能:
from scipy.stats import mode;df.groupby('b')['d'].apply(mode)
标签: python numpy k-means numpy-ndarray