【发布时间】:2015-01-20 21:51:04
【问题描述】:
大家好,
我有一个文本文件,其中包含以下格式的数据:
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,1,4,9,0,0,0,0,2,8,13,47,0,0,0,0,0,0,12,139,11,1,0,0,4,8,44,139,14,4,1,1,30,45,80,139,34,28,0,0,7,34,117,43,0,0,0,0,0,5,40,139,78,9,0,0,0,12,100,139,121,42,4,1,6,7,16,122,101,117,22,13,4,1,10,0,0,0,0,0,0,10,9,33,7,0,0,0,0,42,87,139,20,2,0,0,0,6,95,83,9,5,8,39,73,13,45]
也就是说,每一行都是一个 128 维的样本,同样,我的文本文件中有 50k 个样本。
我正在对上述给定格式的数据执行 K-Means 聚类。当我直接输入数据时,它在以下代码中运行良好:
from sklearn.cluster import MiniBatchKMeans
import numpy
data = [[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,1,4,9,0,0,0,0,2,8,13,47,0,0,0,0,0,0,12,139,11,1,0,0,4,8,44,139,14,4,1,1,30,45,80,139,34,28,0,0,7,34,117,43,0,0,0,0,0,5,40,139,78,9,0,0,0,12,100,139,121,42,4,1,6,7,16,122,101,117,22,13,4,1,10,0,0,0,0,0,0,10,9,33,7,0,0,0,0,42,87,139,20,2,0,0,0,6,95,83,9,5,8,39,73,13,45]]
mbkm = MiniBatchKMeans(init='k-means++', n_clusters=8, batch_size=100, n_init=10, max_no_improvement=10, verbose=0)
mbkm.fit(data)
mbk_means_cluster_centers = mbkm.cluster_centers_
numpy.set_printoptions(threshold=numpy.nan)
print mbk_means_cluster_centers
但是当我使用这段代码时
f = open("sample_input.txt", "r")
out = f.readlines()
for line in out:
print line
要将文本文件中的内容读取为数组格式,它失败了,我收到错误“值错误:无法将字符串转换为浮点数”。
我无法理解我哪里出错了。请建议我一种更好的方法来运行代码。提前致谢!
PS:我在 ubuntu 平台上使用 python 2.7 进行编码。
【问题讨论】:
-
这条线看起来很像 Python,你可能只需执行 "eval(line)" 并获得一个不错的整数数组。
-
您可以通过将每一行解码为 json 字符串来获得所需的内容,因为该格式应与 json 列表类型一致。类似
import json; line_list = json.loads(line);