私のアルゴリズムのために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
入力例を教えてください。 – eliasah
これはデータとは独立しています。そのすべてのために起こって –
いくつかの種を試し、あなたはいつも同じ動作を見ているかどうかを確認してください。 –