및 IDF에 대한 유효한 입력 RDD 변환 이 출력을 얻으십시오 :는 다음 코드를 사용하여 CSV 파일을 포함하는 디렉토리의 불꽃 mllib 알고리즘을 사용하여 내가 TF를 계산하고 kmeans
[SparseVector(1048576, {812399: 4.3307}), SparseVector(1048576, {411697:
0.0066}), SparseVector(1048576, {411697: 0.0066}), SparseVector(1048576,
{411697: 0.0066}), SparseVector(1048576, {411697: 0.0066}), ....
나는 또한있다 이 샘플 테스트 케이스
0.0 0.0 0.0
0.1 0.1 0.1
0.2 0.2 0.2
9.0 9.0 9.0
9.1 9.1 9.1
9.2 9.2 9.2
와
from __future__ import print_function
import sys
import numpy as np
from pyspark import SparkContext
from pyspark.mllib.clustering import KMeans
runs=4
def parseVector(line):
return np.array([float(x) for x in line.split(' ')])
if __name__ == "__main__":
if len(sys.argv) != 3:
print("Usage: kmeans <file> <k>", file=sys.stderr)
exit(-1)
sc = SparkContext(appName="KMeans")
lines = sc.textFile(sys.argv[1])
data = lines.map(parseVector)
k = int(sys.argv[2])
model = KMeans.train(data, k, runs)
print("Final centers: " + str(model.clusterCenters))
print("Total Cost: " + str(model.computeCost(data)))
sc.stop()
하고 그것을 잘 작동합니다 다음 KMeans mllib 알고리즘을 STED.
이제 위의 tfidf에서 rdd 출력을 KMeans 알고리즘에 적용하려고합니다. 위의 샘플 텍스트와 같이 rdd를 어떻게 변환 할 수 있는지, 또는 KMeans 알고리즘에서 rdd를 올바르게 분할하는 방법을 모르겠습니다. 제대로 작동합니다.
정말이 도움말이 필요합니다.
UPDATE
내가 입력을 읽을 수
내가 아니라고이
(1048576,[155412,857472,756332],[1.75642010278,2.41857747478,1.97365255252])
(1048576,[159196,323305,501636],[2.98856378408,1.63863706713,2.44956728334])
(1048576,[135312,847543,743411],[1.42412015238,1.58759872958,2.])
UPDATE2 같은 텍스트 파일에서 KMeans mllib에 적용하는 방법을 내 진짜 질문은 확실히하지만 난 내가 위의 벡터에서 KMeans mllib 알고리즘에 직접 적용 할 수 있도록 아래의 배열로 이동해야한다고 생각
1.75642010278 2.41857747478 1.97365255252
2.98856378408 1.63863706713 2.44956728334
1.42412015238 1.58759872958 2.
Thx 답장을 보내었지만 tfidf의 출력을 사용할 때 (tf idf 코드의 마지막 줄에서 볼 수 있듯이 텍스트 파일로 저장 됨)이 errorTypeError가 발생합니다. 형식를 벡터로 변환합니다. –
Gmilios
@Gmilios 기본적으로 문제는 tfidf에서 데이터를 저장 한 다음 KMeans 전에 다시 읽는 것입니다. – Shaido
@Gmilios이 질문에 대한 답변을 추가했습니다. – Shaido