首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >故障加载PySpark ALS模型

故障加载PySpark ALS模型
EN

Stack Overflow用户
提问于 2019-03-27 09:34:07
回答 1查看 2K关注 0票数 3

我试着加载一个用派斯喀斯特创建的模型。我用以下代码创建了模型:

代码语言:javascript
复制
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”、“元数据”和“userFactors”

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

代码语言:javascript
复制
model = ALS.load("modelSaveOut")

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

代码语言:javascript
复制
model = TrainValidationSplit.load("modelSaveOut")

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-27 09:53:22

如果您读取异常跟踪

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

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

代码语言:javascript
复制
 from pyspark.ml.recommendation import ALS, ALSModel

 ALSModel.load("modelSaveOut")
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55373864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档