Mahout K-означает, кластеризация дает мне результат, как 0 принадлежит кластеру 1.0: [] - PullRequest
0 голосов
/ 10 августа 2011

Я запустил алгоритм кластеризации K-средних для набора файлов последовательности. Тем не менее, сгенерированный результат выглядит следующим образом:

0 относится к кластеру 1.0: []

0 относится к кластеру 1.0: []

0 относится к кластеру 1.0: []

0 относится к кластеру 1.0: []

0 относится к кластеру 1.0: []

0 относится к кластеру 1.0: []

Используемая мною программа заимствована из NewsKMeansClustering.java, пример которого приведен в главе 9 Mahout-in-action.

Не хотели бы вы сообщить мне, почему я получаю такой результат? Это из-за какого-то определенного требования к настройке параметра или чего-то еще?

Код кластеризации ядра в этой программе:

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);

Ответы [ 2 ]

3 голосов
/ 19 сентября 2011

Я столкнулся с той же проблемой, используя Mahout 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 голосов
/ 09 ноября 2011

У меня была эта проблема.Как новичку было очень трудно решить.Однако в моем случае я понял, что значения T1 и T2 для кластеризации купола действительны только для предоставленных данных Reuters (и евклидовой нормы).Я использовал свои собственные данные документа, которые, по-видимому, имели изначально различное распределение расстояний между векторами документов.Так что я сделал некоторый элементарный анализ, затем пересмотрел T1 и T2 по моим собственным данным.Тогда все заработало.См. Также мой пост на ...

Как выбрать пороговые значения T1 и T2 для кластеризации навеса?

Надеюсь, это поможет.

...