如何从 MultilayerPerceptronClassifier 获取分类概率?
How to get classification probabilities from MultilayerPerceptronClassifier?
这似乎最相关:How to get the probability per instance in classifications models in spark.mllib
我正在使用 spark ml 执行 classification 任务,构建一个 MultilayerPerceptronClassifier。建立模型后,我可以获得给定输入向量的预测 class,但我无法获得每个输出的概率 class。上面的清单表明 NaiveBayesModel 从 Spark 1.5.0 (using a predictProbabilities method) 开始支持此功能。我想了解 MLPC 的这个功能。有没有办法破解它以获得我的概率?它会包含在 1.6.2 中吗?
我想简短的回答是否定的
MultilayerPerceptronClassifier 不是概率性的。在训练后设置权重(和任何偏差)时,给定输入的分类将始终相同。
我想你真正想问的是 "if I were to tweak the weights by certain random disturbances of a given magnitude, how likely would the classification be the same as without the tweaks?"
您可以通过重新训练感知器(使用不同的、随机选择的起始条件)来进行临时概率计算,并了解各种分类的概率。
但我不认为这真的是 MLPC 预期行为的一部分。
如果您看一下 this line in the MLPC source code,您会发现 MLPC 正在从底层 TopologyModel
工作,它提供了我正在寻找的 .predict
方法。 MLPC 将生成的 Vector
解码为单个标签。
我能够使用经过训练的 MLPC 模型创建一个新的 TopologyModel
使用它的权重:
MultilayerPerceptronClassifier trainer = new MultilayerPerceptronClassifier()...;
MultilayerPerceptronClassificationModel model = trainer.fit(trainingData);
TopologyModel topoModel = FeedForwardTopology.multiLayerPerceptron(model.layers(), true).getInstance(model.weights());
这似乎最相关:How to get the probability per instance in classifications models in spark.mllib
我正在使用 spark ml 执行 classification 任务,构建一个 MultilayerPerceptronClassifier。建立模型后,我可以获得给定输入向量的预测 class,但我无法获得每个输出的概率 class。上面的清单表明 NaiveBayesModel 从 Spark 1.5.0 (using a predictProbabilities method) 开始支持此功能。我想了解 MLPC 的这个功能。有没有办法破解它以获得我的概率?它会包含在 1.6.2 中吗?
我想简短的回答是否定的
MultilayerPerceptronClassifier 不是概率性的。在训练后设置权重(和任何偏差)时,给定输入的分类将始终相同。
我想你真正想问的是 "if I were to tweak the weights by certain random disturbances of a given magnitude, how likely would the classification be the same as without the tweaks?"
您可以通过重新训练感知器(使用不同的、随机选择的起始条件)来进行临时概率计算,并了解各种分类的概率。
但我不认为这真的是 MLPC 预期行为的一部分。
如果您看一下 this line in the MLPC source code,您会发现 MLPC 正在从底层 TopologyModel
工作,它提供了我正在寻找的 .predict
方法。 MLPC 将生成的 Vector
解码为单个标签。
我能够使用经过训练的 MLPC 模型创建一个新的 TopologyModel
使用它的权重:
MultilayerPerceptronClassifier trainer = new MultilayerPerceptronClassifier()...;
MultilayerPerceptronClassificationModel model = trainer.fit(trainingData);
TopologyModel topoModel = FeedForwardTopology.multiLayerPerceptron(model.layers(), true).getInstance(model.weights());