2017-07-20 9 views
7

मैं स्पार्क के मल्टीलायरपेरसेप्टोन क्लासिफायर का उपयोग कर रहा हूं। यह 'पूर्वानुमान' में एक कॉलम 'अनुमानित' उत्पन्न करता है। जब मैं इसे दिखाने की कोशिश करता हूं तो मुझे त्रुटि मिलती है:मैं स्पार्क मल्टीलायरपेरसेप्टोन क्लासिफायर के भविष्यवाणी कॉलम को क्यों प्रदर्शित नहीं कर सकता?

SparkException: Failed to execute user defined function($anonfun$1: (vector) => double) ... 
Caused by: java.lang.IllegalArgumentException: requirement failed: A & B Dimension mismatch! 

अन्य कॉलम, उदाहरण के लिए, वेक्टर डिस्प्ले ठीक है। भविष्यवाणियों स्कीमा की भाग:

|-- vector: vector (nullable = true) 
|-- prediction: double (nullable = true) 

मेरे कोड है:

//racist is boolean, needs to be string: 
val train2 = train.withColumn("racist", 'racist.cast("String")) 
val test2 = test.withColumn("racist", 'racist.cast("String")) 

val indexer = new StringIndexer().setInputCol("racist").setOutputCol("indexracist") 

val word2Vec = new Word2Vec().setInputCol("lemma").setOutputCol("vector") //.setVectorSize(3).setMinCount(0) 

val layers = Array[Int](4,5, 2) 

val mpc = new MultilayerPerceptronClassifier().setLayers(layers).setBlockSize(128).setSeed(1234L).setMaxIter(100).setFeaturesCol("vector").setLabelCol("indexracist") 

val pipeline = new Pipeline().setStages(Array(indexer, word2Vec, mpc)) 

val model = pipeline.fit(train2) 

val predictions = model.transform(test2) 

predictions.select("prediction").show() 

संपादित प्रस्तावित समान प्रश्न की समस्या

val layers = Array[Int](0, 0, 0, 0) 

था जो मामले यहाँ नहीं है, न ही यह एक ही है त्रुटि।

फिर से संपादित करें: ट्रेन और परीक्षण का भाग 0 PARQUET प्रारूप here में सहेजा गया है।

+0

नहीं यह ऐसा कुछ नहीं। – schoon

+0

उस प्रश्न में समस्या वैल परतें = ऐरे [Int] (0, 0, 0, 0) थी जो यहां मामला नहीं है, न ही यह वही त्रुटि थी। – schoon

+0

क्या आप प्रशिक्षण डेटा फ्रेम का नमूना प्रदान कर सकते हैं? –

उत्तर

3

.setVectorSize के अलावा (3) .setMinCount (0) और वैल परतों को बदलने = सरणी [इंट] (3,5, 2) यह काम किया:

val word2Vec = new Word2Vec().setInputCol("lemma").setOutputCol("vector").setVectorSize(3).setMinCount(0) 

// specify layers for the neural network: 
// input layer of size 4 (features), two intermediate of size 5 and 4 
// and output of size 3 (classes) 
val layers = Array[Int](3,5, 2) 
संबंधित मुद्दे