2

私はMahoutの初心者です。Mahout0.8を使用し、https: //cwiki.apache.org/MAHOUT/clustering-of-synthetic-control-data.htmlのチュートリアルに従いました。

私が使用するとき: mahout org.apache.mahout.clustering.syntheticcontrol.kmeans.Job -i testdata -o output -t1 20 -t2 50 -k 5 -x 20 -ow

次に、clusterdumpを使用してクラスターセンターを抽出します。

mahout clusterdump --input output/clusters-20-final --output /media/synthetic_control.center

Synthesis_control.centerファイル内:

VL-585{n=50 c=[29.832, 29.589, 29.405, 28.516, 29.600, ….] r=[3.152, 3.518, 3.292, …]}

VL-591{n=197 c=[29.984, 29.681,…] r=[3.602, 3.558, 3.364,…]}

VL-595{n=203 c=[….] r=[….]}

VL-597{n=61 c=[….] r=[….]}

VL-599{n=43 c=[….] r=[….]}

VL-585{n=1 c=[….] r=[….]}

VL-591{n=27 c=[….] r=[….]}

VL-595{n=1 c=[….] r=[….]}

VL-597{n=1 c=[….] r=[….]}

VL-599{n=16 c=[….] r=[….]}

kmeanは10個のクラスターを生成するようですが、kの初期設定は5です。

他のkも試しましたが、常に2倍のクラスターが生成されます。

誰かがこれを手伝ってくれますか?どうもありがとう!

4

1 に答える 1

1

ハハ!最後に、コードを読んだ後、mahout org.apache.mahout.clustering.syntheticcontrol.kmeans.Job のバグを見つけました!!

ここに問題があります。syntheticcontrol.kmeans.Job で、ユーザーが k を設定した場合、ジョブは kmeans の前にキャノピー クラスタリングを実行せず、kmean を直接実行します。kmean を実行すると、各クラスターの初期中心が必要になるため、RandomSeedGenerator を使用して各クラスター中心をランダムに生成し、このファイル (part-randomSeed) をoutput/clusters-0 フォルダーに配置します。この kmean の後、最初にこれらの中心を使用してすべてを分類します。ポイントとクラスターの中心を更新し、これらの中心を output/clusters-0 フォルダーに配置します。したがって、clusters-0 フォルダーには、2 つのセットのセンターがあります!! したがって、最初の反復では、2 倍のクラスターが読み取られます。これが、このジョブが常に 2 倍のクラスター数を生成する理由です!

解決策: part-randomSeed を別のフォルダーに保存します。org.apache.mahout.clustering.syntheticcontrol.kmeans.Job で

142行目、 Path clusters = new Path(output, Cluster.INITIAL_CLUSTERS_DIR);

への変更 Path clusters = new Path(output, "randomSeeds");

于 2012-10-13T12:08:38.107 に答える