我在使用保存的MultiLayerPerceptronClassifier模型进行预测时遇到了问题。
# 读取保存的模型# spark版本: 3.1.2, python3.6from pyspark.ml import PipelineModelfrom pyspark.ml import Pipelinesaved_model = "/home/user/Desktop/algorithms/mlpc_model_8979"read_model = PipelineModel.load(saved_model)
# 使用读取的模型进行预测pred = read_model.transform(df)
它抛出了错误:
Py4JJavaError: 调用o98.transform时发生错误: java.util.NoSuchElementException: 未能找到layers的默认值
管道中的原始mlpc定义了layers:
mlpc = MultilayerPerceptronClassifier(layers= [200, 30, 10],\ seed=1234,\ featuresCol="features",\ labelCols="label")
我尝试解决这个问题的方法: 如果我运行管道模型并直接进行预测,而不先保存模型,就不会有错误。但保存并重新使用模型时会抛出这个错误。有人能帮助解决这个“未能找到layers的默认值
”错误吗?
回答:
经过大量搜索,我发现了一个非常奇怪的解决方案。
必须在layers
定义中的= []
前删除空格。
| | v mlpc = MultilayerPerceptronClassifier(layers=[200, 30, 10],\ seed=1234,\ featuresCol="features",\ labelCols="label")