2017-03-28 51 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