2017-03-28 47 views
0

我使用Spark mlib進行二進制分類。我在3000張照片上訓練了一個模型,並且可以預測它是男性還是女性1/0。Spark二進制分類預測精度

final NaiveBayesModel model = NaiveBayes.train(training.rdd(), 1.0); 
JavaRDD predictions = test.map(new Function<Vector, Double>() { 
      @Override 
      public Double call(Vector p) { 
       return model.predict(p); 
      } 
     }); 

我有一個問題,如果圖片不包含任何人。例如一張花的圖片。無論如何,我會得到男性或女性的結果。有沒有辦法看到當前決策的準確性?例如,如果我們試圖對花卉圖片進行預測,則此矢量爲30%男性。或者我需要使用多種分類,如男性/女性/其他人?

回答

0

正如您在您的問題中所述,如果您目前已經訓練了您的模型以執行二進制分類,那就完成了。你可以這樣做至少有兩個不同的東西:

  1. 訓練你的模型來預測三類(malefemaleother),你的建議。
  2. 使用兩個二進制模型,一個預測在human present/not present之間,然後僅將human present結果傳遞給單獨的分類器。

這是很難說的前期這將是更有效,但由於您使用的mllib,它應該是相當直截了當地都去嘗試一下,看看哪一種效果更好。確保使用好的train/validation/test拆分進行比較。

+0

你的意思是培訓一個模型來做'人類現在/不存在'等二元分類,然後如果預測是'人類現在',那麼就預測另一個'男性/女性'訓練模型? –

+0

@RuslanLomov是的,這是對選項2的正確解釋。 – dantiston