从Spark中的Logistic回归模型中提取权重和特征名称

时间:2017-03-24 21:08:49

标签: python apache-spark pyspark

我有一个交叉验证器模型,它有一个估算器作为管道对象。训练的模型是OneVsAll,Logistic回归作为OneVsAll的基本分类器。

以下是适合Cross_validated模型的最佳模型如何看起来像

jpsa_lr.cvModel.bestModel.stages
Out[281]:
[StringIndexer_4c8399b4ed29d68bc275,
 Tokenizer_48ae8fc24affa2e6a68e,
 StopWordsRemover_4b7996719495950017eb,
 CountVectorizer_444c8ac83adb883350a1,
 IDF_4e0793e75252aa6a2477,
 OneVsRestModel_4941951599f4c8a07352]

这就是我训练的方式:

 evaluator = MulticlassClassificationEvaluator(metricName="f1",\
            labelCol=self.pipeline.getStages()[5].getLabelCol(), predictionCol=self.pipeline.getStages()[5].getPredictionCol())

        # Declare the CrossValidator, which runs model tuning for us.
        cv = CrossValidator(estimator=self.pipeline, evaluator=evaluator, estimatorParamMaps=self.paramGrid,numFolds=5)

        # Training the cross validator model
        self.cvModel=cv.fit(self.jpsa_train)

其中Pipeline对象是上述变换器和估算器的对象。

现在我想从cvModel.bestModel获取逻辑模型的权重。

我在这里检查了这个答案并尝试了以下内容:

Extract variable weight from spark pipeline logistic model?

cvModel.bestModel.weights 
cvModel.bestModel.weight

cvModel.bestModel.stages[5].getClassifier().weights
cvModel.bestModel.stages[5].getClassifier().weight

但它们都没有指定属性。虽然上面的答案似乎表明它有。我甚至查看了OnevsAll,logistic,crossvalidator的文档,但没有一个具有权重或拦截属性。

有关获取权重向量和相应要素名称的建议吗?

0 个答案:

没有答案