2016-03-23 17 views
1

私のアルゴリズムのためにmllibで提供されるデフォルトのgmmモデルを実装しました。 私は何度もクラスタを開始しても、結果として得られるウェイトが常に均等に待つことを繰り返しています。重量が調整されていない具体的な理由はありますか?それを間違って実装していますか?スカラースパークのガウス混合モデル1.5.1ウェイトは常に一様に分布します

import org.apache.spark.mllib.clustering.GaussianMixture 
import org.apache.spark.mllib.clustering.GaussianMixtureModel 
import org.apache.spark.mllib.linalg.Vectors 
import org.apache.spark.ml.feature.VectorAssembler 
import org.apache.spark.ml.feature.Normalizer 
import org.apache.spark.sql.DataFrame 
import org.apache.spark.sql.DataFrameNaFunctions 

var colnames= df.columns; 
for(x<-colnames) 
{ 
    if (df.select(x).dtypes(0)._2.equals("StringType")|| df.select(x).dtypes(0)._2.equals("LongType")) 
    {df = df.drop(x)} 

} 
colnames= df.columns; 
var assembler = new VectorAssembler().setInputCols(colnames).setOutputCol("features") 
var output = assembler.transform(df) 
var normalizer= new Normalizer().setInputCol("features").setOutputCol("normalizedfeatures").setP(2.0) 
var normalizedOutput = normalizer.transform(output) 
var temp = normalizedOutput.select("normalizedfeatures") 
var outputs = temp.rdd.map(_.getAs[org.apache.spark.mllib.linalg.Vector]("normalizedfeatures")) 
var gmm = new GaussianMixture().setK(2).setMaxIterations(10000).setSeed(25).run(outputs) 

出力コード:

for (i <- 0 until gmm.k) { 
    println("weight=%f\nmu=%s\nsigma=\n%s\n" format 
    (gmm.weights(i), gmm.gaussians(i).mu, gmm.gaussians(i).sigma)) 
} 

したがってポイントはすべての点で同じクラスタに予測されています。 var ol = gmm.predict(出力).toDF

+0

入力例を教えてください。 – eliasah

+0

これはデータとは独立しています。そのすべてのために起こって –

+0

いくつかの種を試し、あなたはいつも同じ動作を見ているかどうかを確認してください。 –

答えて

1

この問題も発生しています。重みとガウス分布は常に同じです。それはKから独立しているようです。

私のコードはかなりシンプルです。私のデータは、2倍の39次元ベクトルです。私はちょうどこのように訓練します...

val gmm = new GaussianMixture().setK(2).run(vectors) 
for (i <- 0 until gmm.k) { 
    println("weight=%f\nmu=%s\nsigma=\n%s\n" format 
    (gmm.weights(i), gmm.gaussians(i).mu, gmm.gaussians(i).sigma)) 
} 

私はKMeansを試しましたが、期待通りに動作しました。だから私はこれがGaussianMixtureのバグでなければならないと考えました。

しかし、私は最初の次元だけをクラスタリングしてみました。今私はそれが少しのデータでEMの問題でなければならないと思う。

GMMの専門家はいますか? GaussianMixtureと39次元が必要なデータ量。

これは結局のところバグですか?

+0

私はそうだと思います。私はこの問題を解決することができませんでした。 –

関連する問題