如何在Pyspark中安装多层感知器分类器?

如何在Pyspark中安装多层感知器分类器?,pyspark,deep-learning,neural-network,perceptron,multi-layer,Pyspark,Deep Learning,Neural Network,Perceptron,Multi Layer,您好,我正在尝试使用PySpark 2.4.3机器学习库安装多层感知器。但每次我尝试拟合算法时,都会出现以下错误: Py4JJavaError:调用o4105.fit时出错。 :org.apache.SparkException:作业因阶段失败而中止:阶段784.0中的任务0失败4次,最近的失败:阶段784.0中的任务0.3丢失(TID 11663,hdpdncwy87013.dpp.acxiom.net,executor 1):org.apache.spark.SparkException:无

您好,我正在尝试使用PySpark 2.4.3机器学习库安装多层感知器。但每次我尝试拟合算法时,都会出现以下错误:

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


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

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

对于我们来说,多类别分类的问题是我们的标签是
1,2,3
。结果表明,MultiLayerPerceptron希望标签从0开始。因此,当我们从标签中减去1时(使其为0,1,2),模型训练成功,没有任何异常。如果您在非零标签的多类分类问题中遇到此异常,则这可能是您的问题


希望这能节省一些人几个小时的调试时间。

这是一个老问题,但我们现在遇到了完全相同的错误。我们在二进制分类方面没有任何问题,但我们在多类分类问题上引发了此异常,就像您的问题一样

对于我们来说,多类别分类的问题是我们的标签是
1,2,3
。结果表明,MultiLayerPerceptron希望标签从0开始。因此,当我们从标签中减去1时(使其为0,1,2),模型训练成功,没有任何异常。如果您在非零标签的多类分类问题中遇到此异常,则这可能是您的问题

希望这能节省一些人数小时的调试时间

    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)