Python:将一个pandas系列转换成数组,并保留索引
Python: Convert a pandas Series into an array and keep the index
我正在 运行使用 k-means 算法 (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()
附加到语句末尾即可。
我正在 运行使用 k-means 算法 (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()
附加到语句末尾即可。