python - 无法按集群对数据点进行分组
问题描述
我有一个数据列表,其中每个数据点都有 5 个特征和分配给每个点的集群。你可以在这里看到它的开头,最后一列是簇号:
[[4.01682810e-01 2.14628527e-02 2.99529665e-02 2.79935965e-01 9.21441137e-01 9.00000000e+00]
[9.32087200e-03 3.38196129e-01 8.49571569e-01 3.69402590e-01 1.92096835e-01 1.20000000e+01]
[7.51465196e-01 4.45955645e-01 3.37174838e-01 3.65047097e-01 5.81725084e-01 1.00000000e+00]
我想创建同一个集群的数据点列表列表,所以我编写了以下函数并尝试执行它:
def returnArrayOfClusters(data, clusterNumbers):
# create an empty column
column = []
# create an empty list we want to output
listOfClusters = []
# fill it with a column for each cluster
for i in clusterNumbers:
listOfClusters.append(column)
print(listOfClusters)
## fill the columns with points according to their cluster
for datapoint in data:
print(datapoint)
cluster = int(datapoint[5])
listOfClusters[cluster].append(datapoint)
return listOfClusters
listOfClusters = returnArrayOfClusters(data_labeled_unfinished, range(0,14))
我得到的是这种格式的数据点的无序列表(列表的末尾),并且您可以看到列中的所有点都属于不同的集群(它们具有不同的最后一个值):
array([ 0.81802695, 0.45533606, 0.33799001, 0.26154893, 0.64155249,
13. ]), array([0.12995366, 0.45586338, 0.85833814, 0.32153188, 0.28736836,
1. ]), array([0.06230581, 0.47400143, 0.78671841, 0.3162376 , 0.04819034,
9. ]), array([0.15291747, 0.54247295, 0.54407916, 0.87888682, 0.46639597,
8. ]), array([ 0.21578994, 0.178303 , 0.80642112, 0.39853499, 0.27832876,
10. ]), array([0.27426491, 0.32986967, 0.49411613, 0.50818875, 0.2336591 ,
5. ])]
也许这是一个非常愚蠢的错误,但我就是无法发现错误。然而,我希望看到的是列表中的所有点都属于同一个簇(即输出中的第 6 项具有相同的值)
解决方案
希望我让您正确,您可以使用列表理解来拆分数据,例如:
from sklearn.cluster import KMeans
import numpy as np
X = np.random.normal(0,1,(100,5))
kmeans = KMeans(n_clusters=8, random_state=0).fit(X)
data = np.concatenate((X,kmeans.labels_.reshape(-1,1)),axis=1)
[data[data[:,5]==i,] for i in np.unique(data[:,5])]
在你的情况下:
[data_labeled_unfinished[data_labeled_unfinished[:,5]==i,] for i in np.unique(data_labeled_unfinished[:,5])]
推荐阅读
- python - 有没有办法让 ComboBox 记住一个类而不仅仅是 tkinter 中的一个字符串?
- react-native - RN 0.63.1 Release APK 中的 Android 崩溃
- python - 内联字典作为 f-String 中的参数
- python-3.x - Chrome-webdriver 打开时显示“aw snap”和“无法加载扩展错误”(python)
- python - Python Flask Subprocess Libreoffice 在 IIS 中托管时挂起
- android - 使用 LayoutInflater 创建的按钮不会触发 Click 事件
- angular - PrimeNg Global Filter through Module not found 错误
- c++ - 替换为 cpp 中基于 getch 的代码块
- ruby-on-rails-6 - 如何在 rails 6/webpacker 中引用 scss 文件路径?
- android - 如何让我的 Android 应用程序始终在 Chrome 或其他支持 TWA 的浏览器中打开?