我有一个交叉验证器模型,它有一个估算器作为管道对象。训练的模型是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的文档,但没有一个具有权重或拦截属性。
有关获取权重向量和相应要素名称的建议吗?