gpt4 book ai didi

python - 如何解决在执行 K-Means 聚类时设置具有序列错误的数组元素?

转载 作者:行者123 更新时间:2023-12-01 04:52:51 25 4
gpt4 key购买 nike

大家好, 我正在对文本文件中的数据执行 k 均值聚类,该文本文件有大约 50k 个样本,每个样本都有 128 维。

我的输入示例:

[1,1,0,0,0,0,1,0,24,3,0,0,0,0,86,149,149,14,0,0,0,0,32,149,46,16,0,0,1,13,3,33,65,66,0,0,0,0,0,2,149,140,6,0,0,2,62,148,88,24,26,2,0,14,116,148,30,15,1,0,0,1,5,30,56,18,0,0,0,0,0,4,149,46,40,14,0,0,1,34,31,46,149,31,0,2,9,12,1,7,8,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,12,2,0,0,0,0,0,0,0,0,0,0,0,0]

(同样是 50k 样本)

当我在此代码中使用大约 20-30 行此输入时,

from sklearn.cluster import MiniBatchKMeans
import numpy
import csv

f = open("sample_input.txt", "r")
out = [eval(arr) for arr in f.readlines()]


mbkm = MiniBatchKMeans(init='k-means++', n_clusters=50, batch_size=50,
n_init=10, max_no_improvement=10, verbose=0)
mbkm.fit(out)
mbk_means_cluster_centers = mbkm.cluster_centers_

numpy.set_printoptions(threshold=numpy.nan)
print mbk_means_cluster_centers

我得到了输出。但是当我使用整个文件(无论是文本还是 csv 扩展名)时,我收到错误“使用序列设置数组元素”。

当我的代码适用于 20-30 行时,为什么它不适用于 50k 行输入?我假设文本文件的 csv 转换只是通过将文件重命名为 .csv 扩展名来实现。

主要的疑问是如何让这段代码运行 50k 行输入?只有当这个问题解决后,我才能运行它来获取另一个大约有 3,00,000 行输入的数据。请帮忙。提前致谢!

PS:我正在 ubuntu 平台上使用 python 2.7 进行编码。

最佳答案

看起来您在某处的一行上有两个或多个列表,这意味着您正在尝试将两个或多个数组(一个序列)作为单个数组进行评估。当我用两个用逗号分隔的数组对此进行测试时,我得到了与您相同的错误。

尝试这个来查找错误:

f = open("sample_input.txt", "r") 
n = 1
for line in f.readlines():
if len(eval(line)) is not 128:
print "Error is on line %s" % n
n += 1

否则,我建议“分而治之”。如果您将数据分成两半,而其中一半存在问题,请再次将其拆分并继续下去,直到只有一小部分文件存在问题。问题可能出现在多个地方,这意味着可能需要一段时间,但如果不是我建议的那样,它似乎仍然是解决问题的最佳方法。

关于python - 如何解决在执行 K-Means 聚类时设置具有序列错误的数组元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28071935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com