2011-08-10 42 views
0

我對一組序列文件運行K均值聚類算法。然而,所產生的結果如下所示:Mahout K均值聚類給我的結果就像0屬於聚類1.0:[]

0屬於羣集1.0:[]

0屬於羣集1.0:[]

0屬於羣集1.0:[]

0屬於羣集1.0:[]

0屬於羣集1.0:[]

0屬於cluste [R 1.0:[]

我使用的程序從NewsKMeansClustering.java,在亨利馬烏在行動的第9章給出的例子借來的。

想讓我知道爲什麼我會得到這種類型的結果嗎?這是由於任何特定的參數設置要求或其他?

在這個方案的核心集羣代碼

CanopyDriver.run(vectorsFolder, canopyCentroids, new EuclideanDistanceMeasure(), 250, 120, false, false); 

KMeansDriver.run(conf, vectorsFolder, new Path(canopyCentroids, "clusters-0"), 
clusterOutput, new TanimotoDistanceMeasure(), 0.01, 20, true, false); 

回答

3

我跑進使用亨利馬烏0.5同樣的問題。 我認爲問題在於normPower參數在兩個函數中都使用。 嘗試類似代碼。

DictionaryVectorizer.createTermFrequencyVectors(tokenizedPath, 
       outputDir, conf, minSupport, maxNGramSize, 
       minLLRValue, 
       -1.0f, // no normalization here 
       logNormalize, numReducers, chunkSize, 
       sequentialAccessOutput, namedVector); 
TFIDFConverter.processTfIdf(vectorOutput, new Path(outputDir, 
       "tfidf"), conf, chunkSize, minDf, 
       maxDFPercent,normPower, 
       logNormalize, sequentialAccessOutput, namedVector, 
       numReducers); 

之後,我停止了與空集羣的問題。

2

我有這個問題。作爲新手,解決起來非常困難。然而,就我而言,我意識到,冠層聚類的T1和T2值僅對路透社提供的數據(和歐幾里得標準)有效。我使用了我自己的文檔數據,這些文檔數據似乎在文檔向量之間具有固有的不同距離分佈。所以我做了一些基本的分析,然後從我自己的數據中重新估計了T1和T2。然後事情奏效。見我的文章也是在...

How to pick the the T1 and T2 threshold values for Canopy Clustering?

希望這有助於。