【问题标题】:Python: Convert a pandas Series into an array and keep the indexPython:将熊猫系列转换为数组并保留索引
【发布时间】:2021-03-01 15:58:16
【问题描述】:

我正在运行 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]]

谁能告诉我如何做到这一点或我可以使用哪些其他方法来解决我的问题?

【问题讨论】:

    标签: python arrays pandas numpy k-means


    【解决方案1】:

    类似下面的单线可以工作:

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

    【讨论】:

      【解决方案2】:

      一种选择是使用:

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

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

      如果您想要列表中的结果,只需将.tolist() 附加到语句的末尾即可。

      【讨论】:

        猜你喜欢
        • 2019-03-26
        • 2013-06-18
        • 1970-01-01
        • 2014-03-05
        • 2021-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多