【问题标题】:How to fit a MultiLayerPerceptron Classifier in Pyspark?如何在 Pyspark 中安装 MultiLayerPerceptron 分类器?
【发布时间】:2020-08-14 01:23:43
【问题描述】:

您好,我正在尝试将 MultiLayerPerceptron 与 PySpark 2.4.3 机器学习库配合使用。但每次我尝试拟合算法时,都会出现以下错误:

Py4JJavaError:调用 o4105.fit 时出错。 :org.apache.spark.SparkException:作业因阶段失败而中止:阶段 784.0 中的任务 0 失败 4 次,最近一次失败:阶段 784.0 中丢失任务 0.3(TID 11663,hdpdncwy87013.dpp.acxiom.net,执行程序 1) : org.apache.spark.SparkException: 无法执行用户定义的函数($anonfun$org$apache$spark$ml$feature$OneHotEncoderModel$$encoder$1: (double, int) => struct,values:array>) 在 org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIteratorForCodegenStage1.processNext(Unknown Source)

    df = sqlContext.read.format("csv").options(header='true', sep=",", inferschema='true').load(location)



    exclude = ["Target"]
    inputs = [column for column in df.columns if (column not in exclude)]
    vectorAssembler = VectorAssembler(inputCols=inputs, outputCol='Features')
    vdf = vectorAssembler.transform(df)
    vdf = vdf.select(['Features'] + exclude)

    # Feature Scaling
    scaler = MinMaxScaler(inputCol="Features", outputCol="scaledFeatures")
    scalerModel = scaler.fit(vdf)
    scaledData = scalerModel.transform(vdf)

    # train-test split
    splits = scaledData.randomSplit([0.7, 0.3], seed=2020)
    train_df = splits[0]
    test_df = splits[1]

    layers = [len(inputs), 3, 3, 3,  5]
    mlpc = MultilayerPerceptronClassifier(labelCol="Target", featuresCol="scaledFeatures", layers=layers,
                                          blockSize=128, stepSize=0.03, seed=2020, maxIter=1000)
    model = mlpc.fit(train_df)

你有什么想法吗?先感谢您。输入数 1902,要预测的类数 5。

【问题讨论】:

    标签: pyspark deep-learning neural-network perceptron multi-layer


    【解决方案1】:

    这是一个老问题,但我们现在遇到了完全相同的错误。我们对二元分类没有任何问题,但是我们为多类分类问题抛出了这个异常,就像你的一样。

    对我们来说,多类分类的问题是我们的标签是1, 2, 3。事实证明,MultiLayerPerceptron 期望标签从 0 开始。因此,当我们从标签中减去 1(使它们成为 0、1、2)时,模型毫无例外地成功训练。如果您对具有非零标签的多类分类问题有此异常,这可能是您的问题。

    希望这可以节省调试时间。

    【讨论】:

      猜你喜欢
      • 2023-04-08
      • 2022-11-10
      • 2020-10-26
      • 2021-07-24
      • 1970-01-01
      • 1970-01-01
      • 2018-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多