我使用数据库中列出的管道流构建了一个逻辑回归模型。https://docs.databricks.com/spark/latest/mllib/binary-classification-mllib-pipelines.html
使用X1 M0 N1 X对特征(数字和字符串特征)进行编码,然后使用标准定标器进行变换。
我想知道如何将从逻辑回归中获得的权重(系数)Map到原始 Dataframe 中的特征名称。
换句话说,如何得到相应的特征权值或系数从模型中获得
谢谢你
我尝试从lrModel.schema中提取特征,它给出了一个structField
列表,显示了这些特征
我尝试从方案中提取要素并Map到权重,但没有成功
from pyspark.ml.classification import LogisticRegression
# Create initial LogisticRegression model
lr = LogisticRegression(labelCol="label", featuresCol="scaledFeatures", maxIter=10)
# Train model with Training Data
lrModel = lr.fit(trainingData)
predictions = lrModel.transform(trainingData)
LRschema = predictions.schema
从提取中预期的结果-元组列表(特征权重、特征名称)
3条答案
按热度按时间6tdlim6h1#
不是LogisticRegression的直接输出,但可以使用我使用的以下函数获得:
results = ExtractFeatureCoeficient(lr_model, trainingData)
results.show()
这将生成具有以下字段的Spark Dataframe :
或者,您可以按如下方式拟合GML模型:
生成输出:
k75qkfdt2#
假设您有一个逻辑回归要处理,这个Pandas变通方案将给予您结果。
k5ifujac3#
上述解决方案似乎都不适用于我的情况。我的模型混合了数字变量和二进制变量。而且所有的数据转换和模型验证都连接在一个长管道中,因此我只能在预测数据中看到模式。我能够拼凑一些代码来迭代模式,并从所有变量名称中创建一个字典。然后把这个和系数联系起来。