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



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

Py4JJavaError:调用o4105.fit时出错。:org.apache.spark.SparkException:由于阶段失败而中止作业:阶段784.0中的任务0失败4次,最近一次失败:阶段7840中丢失任务0.3(TID 11663,hdpdncwy87013dpp.acxiom.net,executor 1(:org.apache_spark.spark Exception:无法执行用户定义的函数($anonfun$org.apache$spark$ml$feature$OneHotEncoderModel$$encoder$1:(double,int(=>struct,values:array>(网址:org.apache.spark.sqlcatalyst.expressions.GeneratedClass$GeneratedTeratorForCodegenStage1.processNext(未知来源(

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。

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

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

希望这样可以节省用户数小时的调试时间。

最新更新