【问题标题】:Trouble loading PySpark ALS model无法加载 PySpark ALS 模型
【发布时间】:2019-08-17 19:45:14
【问题描述】:

我正在尝试加载使用 Pyspark 创建的模型。我使用以下代码创建了模型:

import pandas as pd
from pyspark.ml.evaluation import RegressionEvaluator
from pyspark.ml.recommendation import ALS
from pyspark.ml.tuning import TrainValidationSplit, ParamGridBuilder
from pyspark.context import SparkContext
from pyspark.sql.session import SparkSession
sc = SparkContext('local')
spark = SparkSession(sc)

data = pd.read_csv('matrix-out-small.csv')
df = spark.createDataFrame(data)

(training, test) = df.randomSplit([0.8, 0.2])

als = ALS(userCol="CustomerID", itemCol="ProductID", ratingCol="Rating", coldStartStrategy="drop", nonnegative=True)

# Tune model using param grid builder
param_grid = ParamGridBuilder().addGrid(als.rank, [12, 13, 14]).addGrid(als.maxIter, [18, 19, 20]).addGrid(als.regParam, [.17, .18, .19]).build()

evaluator = RegressionEvaluator(metricName="rmse", labelCol="Rating", predictionCol="prediction")

tvs = TrainValidationSplit(estimator=als, estimatorParamMaps=param_grid, evaluator=evaluator)

# fit model to training data
model = tvs.fit(training)

# extract best
best_model = model.bestModel  

best_model.save("modelSaveOut")

这会创建一个名为“ModelSaveOut”的目录,其中包含“ItemFactors”、“metadata”和“userFactors”

当我尝试使用 ALS.load 加载模型时,我得到以下信息:

model = ALS.load("modelSaveOut")

py4j.protocol.Py4JJavaError: 调用 o26.load 时出错。 :java.lang.NoSuchMethodException: org.apache.spark.ml.recommendation.ALSModel.(java.lang.String)

model = TrainValidationSplit.load("modelSaveOut")

py4j.protocol.Py4JJavaError: 调用 o26.load 时出错。 :java.lang.IllegalArgumentException:要求失败:错误 加载元数据:预期的类名 org.apache.spark.ml.tuning.TrainValidationSplit 但找到类名 org.apache.spark.ml.recommendation.ALSModel

看来我没有使用正确的对象/方法加载模型。是否可以保存“bestModel”,还是我需要使用不同的方法保存整个模型?

【问题讨论】:

    标签: java apache-spark pyspark


    【解决方案1】:

    如果您阅读异常跟踪

    但找到了类名 org.apache.spark.ml.recommendation.ALSModel

    它会准确地告诉你该怎么做:

     from pyspark.ml.recommendation import ALS, ALSModel
    
     ALSModel.load("modelSaveOut")
    

    【讨论】:

    • 谢谢。我已经尝试过了,我在 ALSModel 上得到一个未解决的参考错误
    • 已将其更新为 from pyspark.ml.recommendation import ALS, ALSModel 并且可以正常工作!不敢相信我没有尝试引用 ALSModel...
    猜你喜欢
    • 2018-12-17
    • 2022-06-16
    • 1970-01-01
    • 2016-06-19
    • 2021-06-25
    • 2013-10-16
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多