java - Spark 告诉我特征列是错误的
问题描述
什么可能导致此错误。我有点失落。我发现的一切都对我没有帮助。
堆栈跟踪:
Exception in thread "main" java.lang.IllegalArgumentException: requirement failed: Column features must be of type struct<type:tinyint,size:int,indices:array<int>,values:array<double>> but was actually struct<type:tinyint,size:int,indices:array<int>,values:array<double>>.
at scala.Predef$.require(Predef.scala:224)
at org.apache.spark.ml.util.SchemaUtils$.checkColumnType(SchemaUtils.scala:43)
at org.apache.spark.ml.PredictorParams$class.validateAndTransformSchema(Predictor.scala:51)
at org.apache.spark.ml.classification.Classifier.org$apache$spark$ml$classification$ClassifierParams$$super$validateAndTransformSchema(Classifier.scala:58)
at org.apache.spark.ml.classification.ClassifierParams$class.validateAndTransformSchema(Classifier.scala:42)
at org.apache.spark.ml.classification.ProbabilisticClassifier.org$apache$spark$ml$classification$ProbabilisticClassifierParams$$super$validateAndTransformSchema(ProbabilisticClassifier.scala:53)
at org.apache.spark.ml.classification.ProbabilisticClassifierParams$class.validateAndTransformSchema(ProbabilisticClassifier.scala:37)
at org.apache.spark.ml.classification.ProbabilisticClassifier.validateAndTransformSchema(ProbabilisticClassifier.scala:53)
at org.apache.spark.ml.Predictor.transformSchema(Predictor.scala:144)
at org.apache.spark.ml.PipelineStage.transformSchema(Pipeline.scala:74)
at org.apache.spark.ml.Predictor.fit(Predictor.scala:100)
at classifier.Clasafie.trainModel_MPC(Clasafie.java:46)
at classifier.Clasafie.MPC_Classifier(Clasafie.java:75)
at classifier.Clasafie.main(Clasafie.java:30)
代码部分:
public static MultilayerPerceptronClassificationModel trainModel_MPC(SparkSession session,JavaRDD<LabeledPoint> data)
{
int[] layers = {784,800};
MultilayerPerceptronClassifier model = new MultilayerPerceptronClassifier().setLayers(layers)
.setSeed((long) 42).setBlockSize(128).setMaxIter(1000);
Dataset<Row> dataset = session.createDataFrame(data.rdd(), LabeledPoint.class);
return model.fit(dataset);
}
解决方案
我认为问题在于使用LabelPoint
正确包中的类。
检查完整包并使用来自 ml 包而不是来自 mllib 的 on。
我想,你正在使用 -
org.apache.spark.mllib.regression.LabeledPoint
请使用(在 spark v2.0.0 中引入)-
org.apache.spark.ml.feature.LabeledPoint
推荐阅读
- javascript - 需要帮助循环一些引号
- android - Sqlite 在模拟器上运行完美,但不能在移动设备上运行
- node.js - Node js检查用户ID是否在数组中
- python - 如何在 pysnmp 中添加新的 MIB 文本文件?
- javascript - Electron.js Uncaught ReferenceError: require is not defined
- sql - 在 SQL Server 中重新编号从“1”开始的汇总部分字段
- php - 无法使用 apt-get 安装 PHP 包,给出“E: Unable to locate package”
- python - `@pyqtSlot()` 对嵌套函数有同样的影响吗?
- delphi - 我想确定数组中的数字是否是 50 的因数
- composer-php - 通过 composer 安装 PHP 库