我试图使用spark MLlib运行k-means,但我得到了索引超出范围的错误。在
我已经拆分了我非常小的示例输入文件,输出如下这:在
['hello', 'world', 'this', 'is', 'earth']
['what', 'are', 'you', 'trying', 'to', 'do']
['trying', 'to', 'learn', 'something']
['I', 'am', 'new', 'at', 'this', 'thing']
['what', 'about', 'you']
现在我使用spark给出的TFIDF代码来实现稀疏表示。输出为:-
^{pr2}$现在我运行MLlib在火花:-在
clusters = KMeans.train(tfidf_vectors, 2, maxIterations=10)
def error(point):
center = clusters.centers[clusters.predict(point)]
return sqrt(sum([x**2 for x in (point - center)]))
WSSSE = tfidf_vectors.map(lambda point: error(point)).reduce(lambda x, y: x + y)
print("Within Set Sum of Squared Error = " + str(WSSSE))
clusters.save(sc, "myModelPath")
sameModel = KMeansModel.load(sc, "myModelPath")
但我在WSSSE步骤得到了索引超出范围的错误。 我做错什么了?在
我今天已经遇到了一个类似的问题,它看起来像是is a bug。TFIDF创建
SparseVectors
,如下所示:使用大于最后一个非零值的索引访问值会导致异常:
^{pr2}$快速但不是很有效的解决方法是将
SparseVector
转换为NumPy数组:相关问题 更多 >
编程相关推荐