我对ML和Spark ML都很陌生,我正在尝试使用带有Spark ML的神经网络制作预测模型,但是当我在学习模型上调用Failed to load resource: the server responded with a status of 404 (OK)
bluebird.min.js:29 Unhandled rejection Error: XHR error (404 OK) loading https://gist.host/run/1487343107475/jquery.js
at o (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.6/system.js:4:12694)
at XMLHttpRequest.s.onreadystatechange (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.6/system.js:4:13219)
方法时,我得到了这个错误。问题是由OneHotEncoder的使用引起的,因为没有它一切正常。
我已经尝试将OneHotEncoder从管道中取出。
我的问题是:如何使用OneHotEncoder而不会出现此错误?
.transform
我的代码:
java.lang.IllegalArgumentException: requirement failed: A & B Dimension mismatch!
at scala.Predef$.require(Predef.scala:224) at org.apache.spark.ml.ann.BreezeUtil$.dgemm(BreezeUtil.scala:41) at
org.apache.spark.ml.ann.AffineLayerModel.eval(Layer.scala:163) at
org.apache.spark.ml.ann.FeedForwardModel.forward(Layer.scala:482) at
org.apache.spark.ml.ann.FeedForwardModel.predict(Layer.scala:529)
谢谢!
答案 0 :(得分:3)
layers
Param
不正确:
setLayers([len(features), 20, 10, 2])
第一层应该反映输入要素的数量,这些要素通常与编码前的原始列数不同。
如果您事先不知道功能的总数,则可以单独进行功能提取和模型训练。伪代码:
feature_pipeline_model = (Pipeline()
.setStages(...) # Only feature extraction
.fit(train_df))
train_df_features = feature_pipeline_model.transform(train_df)
layers = [
train_df_features.schema["features"].metadata["ml_attr"]["num_attrs"],
20, 10, 2
]
答案 1 :(得分:-1)
我遇到了同样的问题,并对user6910411的建议采取了更手动的方法。例如,我有
layers = [**100**, 100, 100 ,100]
但是我的输入变量数实际上是199,所以我只是更改为
layers = [**199**, 100, 100 ,100]
,问题似乎已解决。 :-D