2016-04-07 5 views
3

このようにランダムフォレスト(スパーク1.6.0)訓練スパークランダムフォレスト分類子numClasses

val numClasses = 4 // 0-2 
val categoricalFeaturesInfo = Map[Int, Int]() 
val numTrees = 9 
val featureSubsetStrategy = "auto" // Let the algorithm choose. 
val impurity = "gini" 
val maxDepth = 6 
val maxBins = 32 

val model = RandomForest.trainClassifier(trainRDD, numClasses, 
             categoricalFeaturesInfo, numTrees, 
             featureSubsetStrategy, impurity, 
             maxDepth, maxBins) 

入力ラベル:

labels = labeledRDD.map(lambda lp: lp.label).distinct().collect() 
for label in sorted(labels): 
    print label 

0.0 
1.0 
2.0 

しかし、出力のみ2つのクラスだけ含まれています

metrics = MulticlassMetrics(labelsAndPredictions) 
df_confusion = metrics.confusionMatrix() 
display_cm(df_confusion) 

出力:

83017.0 81.0 0.0 
8703.0 2609.0 0.0 
10232.0 255.0 0.0 

私はpysparkで同じモデルをロードし、他のデータ(上記の部分)に対してそれを実行したときからの出力に

DenseMatrix([[ 1.75280000e+04, 3.26000000e+02], 
      [ 3.00000000e+00, 1.27400000e+03]]) 
+1

これはPyScalaのですか? – eliasah

+0

これを再現することはできません。少なくとも、混乱行列には何も問題はありません。あなたは実際に3つのクラスを持っています:) – zero323

+0

@ zero323私はそれを保存し、それを読み込んでいます。それかもしれない。あなたの複製を投稿することができます – oluies

答えて

0

それは良くなった...私は列がやっているかを把握するためにピアソン相関を使用相関はありません。 10の最低の相関列を削除し、今は大丈夫な結果を得る:

enter image description here

Test Error = 0.0401823 
precision = 0.959818 
Recall = 0.959818 

ConfusionMatrix([[ 17323.,  0., 359.], 
       [  0., 1430.,  92.], 
       [ 208., 170., 1049.]]) 

enter image description here

+0

このすべてが意味をなさないように入力データを提供できますか? – eliasah

+1

Turbofan Engine劣化シミュレーションデータセットの最初のトレーニングセットは です。http://ti.arc.nasa.gov/tech/dash/pcoe/prognostic-data-repository/ – oluies

+0

クール、私は問題の再現について興味があります!ときにA(私は後でREPROを開くでしょう、ここで – eliasah

関連する問題