python - 保存 Spark 模型摘要

标签 python apache-spark pyspark logistic-regression

我正在使用 spark 版本在 pyspark 中运行逻辑回归:2.1.2

我知道可以按如下方式保存回归模型:

# Initialise the logistic regression
model = LogisticRegression(featuresCol='features', labelCol='is_clickout',regParam=0, fitIntercept=False, family="binomial")

model = pipeline.fit(data)

# save model for future use
save_path = "model_0"
model.save(save_path)

问题是保存的模型没有保存摘要:
from pyspark.ml.classification import LogisticRegressionModel
model2 = LogisticRegressionModel.load(save_path)
model2.hasSummary ##### Returns FALSE

我可以按如下方式提取摘要,但它没有附加保存方法:
# 获取模型摘要
摘要 = model.stages[-1].summary

有没有一种快速的方法来保存摘要对象?对于多元回归?

目前我读取了对象的所有属性并将其保存为pandas df。

最佳答案

不幸的是,您的观察是正确的。我在 Spark 2.4.3 上遇到了同样的问题,我发现 this comment确认问题:

For LinearRegressionModel, this does NOT currently save the training summary. An option to save summary may be added in the future.



同样的评论仍然存在于 Spark 3.0.0-rc1(其存储库中的最后一个可用标签)。

如果我们想持久化 摘要 ,我们需要自己以某种方式序列化它。我之前通过提取我想要的统计数据并将它们保存在 JSON 文档中,在训练我的模型之后完成了此操作。

关于python - 保存 Spark 模型摘要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53722410/

相关文章:

java - 显式指定用于读取 JSON 的架构并将缺失的字段标记为 null

scala - Spark 写入: CSV data source does not support null data type

apache-spark - 是否可以将经过训练的 Spark ML 模型或交叉验证器保存到 postgresql 数据库?

java - Spark Master在Worker节点应用程序/作业提交后出现IOException后无休止地重新提交

python - docutils 和 Sphinx 是什么关系?

python - 如何使用pandas python获取数据框中每列的最大长度

apache-spark - 基于流的应用程序中的受控/手动错误/恢复处理

python - 属性错误 : 'Pipeline' object has no attribute '_transfer_param_map_to_java'

python - opygame : trying to bouce a ball, 但它卡住了

python - 如何使用 mod_wsgi/django/python 生成线程安全的 pdf