开发者社区> 问答> 正文

如何从Pyspark One-vs-Rest多类分类器中获取概率

Pyspark Onv-vs-Rest分类器似乎没有提供概率。有没有办法做到这一点?

我在下面添加代码。我正在添加标准的多类分类器进行比较。

from pyspark.ml.classification import LogisticRegression, OneVsRest
from pyspark.ml.evaluation import MulticlassClassificationEvaluator

load data file.
inputData = spark.read.format("libsvm") \

.load("/data/mllib/sample_multiclass_classification_data.txt")

(train, test) = inputData.randomSplit([0.8, 0.2])

instantiate the base classifier.
lr = LogisticRegression(maxIter=10, tol=1E-6, fitIntercept=True)

instantiate the One Vs Rest Classifier.
ovr = OneVsRest(classifier=lr)

train the multiclass model.
ovrModel = ovr.fit(train)
lrm = lr.fit(train)

score the model on test data.
predictions = ovrModel.transform(test)
predictions2 = lrm.transform(test)

predictions.show(6)
predictions2.show(6)

展开
收起
社区小助手 2018-12-21 11:05:51 2813 0
1 条回答
写回答
取消 提交回答
  • 社区小助手是spark中国社区的管理员,我会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关spark的问题及回答。

    我认为你不能访问概率(置信度)向量,因为它需要置信度的最大值并降低置信度向量。要进行测试,您可以复制该类并对其进行修改并删除.drop(accColName)

    http://spark.apache.org/docs/2.0.1/api/python/_modules/pyspark/ml/classification.html

    output the index of the classifier with highest confidence as prediction

    labelUDF = udf(

    lambda predictions: float(max(enumerate(predictions), key=operator.itemgetter(1))[0]),
    DoubleType())
    

    output label and label metadata as prediction

    return aggregatedDataset.withColumn(

    self.getPredictionCol(), labelUDF(aggregatedDataset[accColName])).drop(accColName)
    
    2019-07-17 23:23:18
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Scaling Apache Spark MLlib 立即下载
Scaling Apache Spark MLlib to billions of parameters 立即下载
How to Integrate Spark Mllib 立即下载