问题描述
我在 pyspark 中寻找 ALS 推荐系统的最佳参数,它一直显示错误消息,如“SparkContext 已关闭”/“丢失的任务”/“Bad mod”/“ >BlockManagerMasterEndpoint:没有更多副本可用于..."。
我尝试添加检查点,但运行几个小时后仍然失败。
我使用的代码:
from pyspark.ml.tuning import ParamGridBuilder,CrossValidator
from pyspark.ml.evaluation import RegressionEvaluator
als = ALS(implicitPrefs=True,userCol="user",itemCol="brand_index",ratingCol="rating",coldStartStrategy="drop",nonnegative=True,checkpointInterval=3)
ALS.checkpointInterval =2
param_grid = ParamGridBuilder() \
.addGrid(als.rank,[10,50,100,150]) \
.addGrid(als.regParam,[.01,.05,.1,.15]) \
.build()
evaluator = RegressionEvaluator(
metricName="rmse",labelCol="rating",predictionCol="prediction")
print ("Num models to be tested: ",len(param_grid))
cv = CrossValidator(estimator=als,estimatorParamMaps=param_grid,evaluator=evaluator,numFolds=5)
sc.setCheckpointDir('checkpoint/')
model = cv.fit(training)
best_model = model.bestModel
print("**Best Model**")
print(" Rank:",best_model._java_obj.parent().getRank())
print(" MaxIter:",best_model._java_obj.parent().getMaxIter())
print(" RegParam:",best_model._java_obj.parent().getRegparam())
有人有类似的问题吗?任何建议将不胜感激!
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)