1

python-wise 我更喜欢 .predict_proba(X) 而不是 .decision_function(X) 因为我更容易解释结果。据我所见,后者的功能已经在 Spark 中实现(例如,在 0.9.2 版本中,我必须自己计算点积,否则我得到 0 或 1)但前者尚未实现(还!)。我应该怎么做\如何在Spark中实现那个?这里所需的输入是什么?公式看起来如何?

4

1 回答 1

0

在 Spark/Mlib 1.3 版中,我似乎预测函数可以通过清除阈值来返回概率。从这个页面:https ://spark.apache.org/docs/1.3.0/api/python/pyspark.mllib.html#module-pyspark.mllib.classification

>>> data = [
...     LabeledPoint(0.0, [0.0, 1.0]),
...     LabeledPoint(1.0, [1.0, 0.0]),
... ]
>>> lrm = LogisticRegressionWithSGD.train(sc.parallelize(data))
>>> lrm.predict([1.0, 0.0])
1
>>> lrm.predict([0.0, 1.0])
0
>>> lrm.predict(sc.parallelize([[1.0, 0.0], [0.0, 1.0]])).collect()
[1, 0]
>>> lrm.clearThreshold()
>>> lrm.predict([0.0, 1.0])
0.123...

源代码中的预测函数调用说明了这一点: https ://spark.apache.org/docs/1.3.0/api/python/_modules/pyspark/mllib/classification.html#LogisticRegressionModel.predict

if self._threshold is None:
            return prob
        else:
            return 1 if prob > self._threshold else 0

我希望这会有所帮助。

于 2015-04-11T20:02:20.423 回答