Python:将pandas系列转换为数组并保留索引



我正在运行一个k-均值算法(k=5(来对我的数据进行聚类。为了检查算法的稳定性,我首先在整个数据集上运行一次算法,然后在2/3的数据集上多次运行算法(使用不同的随机状态进行拆分(。我用这些结果来预测我剩下的1/3数据的聚类。最后,我想将预测的聚类与我在整个数据集上运行k-means时得到的聚类进行比较。这就是我陷入困境的地方。

由于k-means总是为(或多或少(相同的聚类分配不同的标签,我不能只是比较它们。我尝试使用.value_counts()根据标签的频率重新分配标签0到4。但因为我多次运行此检查,所以我需要一个能循环工作的东西
基本上,当我使用.value_counts()时,我会得到这样的东西:

PredictedCluster  
4              55555  
0              44444
2              33333
1              22222
3              11111

我希望我能把它变成一个数组,其中标签按大小排序:

a = [[4, 55555],[0,44444],...,[3,11111]]

有人能告诉我如何做到这一点吗?或者我可以用什么其他方法来解决我的问题?

类似下面一行的东西可以工作:

a = list(map(list, df["PredictedCluster"].value_counts().items()))

一个选项是使用:

(df['PredictedCluster'].value_counts(ascending=False)
.reset_index()
.to_numpy())

这将对值进行计数,按这些计数进行排序(降序(,然后将结果转换为numpy.ndarray

如果您希望结果显示在列表中,只需将.tolist()附加到语句末尾即可。

最新更新