【问题标题】:pyspark how to save and load one vs rest classifier logistic regressionpyspark如何保存和加载一个vs rest分类器逻辑回归
【发布时间】:2020-11-07 23:44:10
【问题描述】:

我正在使用 pyspark 2.4.5 我在保存和加载一个 vs 休息分类器时遇到问题

下面是代码

 from pyspark.ml.classification import LogisticRegression, OneVsRest
 start=time.time()
 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(df)
 end=time.time()     

 ovrModel.save('s3://one_vs_Rest_model')

在加载我给出的模型时

 lr = LogisticRegression(maxIter=10, tol=1E-6, fitIntercept=True)

 # instantiate the One Vs Rest Classifier.
 ovr = OneVsRest(classifier=lr)
 ovr_mdl=ovr.load('s3://one_vs_Rest_model')

我得到错误

'requirement failed: Error loading metadata: Expected class name 
org.apache.spark.ml.classification.OneVsRest but found class name 
org.apache.spark.ml.classification.OneVsRestModel'
Traceback (most recent call last):
File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/ml/util.py", line 362, in load
return cls.read().load(path)
 File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/ml/util.py", line 300, in load
java_obj = self._jread.load(path)
 File "/usr/lib/spark/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py", line 1257, in __call__
answer, self.gateway_client, self.target_id, self.name)
 File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/utils.py", line 79, in deco
raise IllegalArgumentException(s.split(': ', 1)[1], stackTrace)
pyspark.sql.utils.IllegalArgumentException: 'requirement failed: Error loading metadata: Expected 
class name org.apache.spark.ml.classification.OneVsRest but found class name 
org.apache.spark.ml.classification.OneVsRestModel'

【问题讨论】:

  • 看官方docmodel2 = OneVsRestModel.load(model_path) 你必须使用Model类来加载路径而不是重新初始化OneVsRest模型
  • 感谢您回答问题。如果不是现在稍后时间点肯定会测试。这真的很有帮助。如果有任何疑问会再次回复您

标签: pyspark logistic-regression apache-spark-ml


【解决方案1】:

问题是您已经保存了一个 OneVsRestModel 对象,并且您正在尝试加载一个 OneVsRest 对象。

要加载保存的模型,您可以这样做:

from pyspark.ml.classification import OneVsRestModel
ovr_mdl = OneVsRestModel.load('s3://one_vs_Rest_model')

【讨论】:

    猜你喜欢
    • 2018-05-21
    • 1970-01-01
    • 2017-01-03
    • 2020-08-01
    • 2016-02-01
    • 2019-04-11
    • 2021-06-17
    • 1970-01-01
    相关资源
    最近更新 更多