मैं अपाचे स्पार्क एमएलआईबीआईबी का उपयोग कर एक दस्तावेज़ वर्गीकरण को लागू करने की कोशिश कर रहा हूं और मुझे डेटा का प्रतिनिधित्व करने में कुछ समस्याएं आ रही हैं।डेटाफ्रेम से आरडीडी तक [लेबल किए गए पॉइंट]
import org.apache.spark.sql.{Row, SQLContext}
import org.apache.spark.sql.types.{StringType, StructField, StructType}
import org.apache.spark.ml.feature.Tokenizer
import org.apache.spark.ml.feature.HashingTF
import org.apache.spark.ml.feature.IDF
val sql = new SQLContext(sc)
// Load raw data from a TSV file
val raw = sc.textFile("data.tsv").map(_.split("\t").toSeq)
// Convert the RDD to a dataframe
val schema = StructType(List(StructField("class", StringType), StructField("content", StringType)))
val dataframe = sql.createDataFrame(raw.map(row => Row(row(0), row(1))), schema)
// Tokenize
val tokenizer = new Tokenizer().setInputCol("content").setOutputCol("tokens")
val tokenized = tokenizer.transform(dataframe)
// TF-IDF
val htf = new HashingTF().setInputCol("tokens").setOutputCol("rawFeatures").setNumFeatures(500)
val tf = htf.transform(tokenized)
tf.cache
val idf = new IDF().setInputCol("rawFeatures").setOutputCol("features")
val idfModel = idf.fit(tf)
val tfidf = idfModel.transform(tf)
// Create labeled points
val labeled = tfidf.map(row => LabeledPoint(row.getDouble(0), row.get(4)))
मैं dataframes उपयोग करने के लिए टोकन पैदा करते हैं और TF-आईडीएफ सुविधाओं बनाने की जरूरत: मेरी कोड निम्नलिखित है। समस्या तब प्रकट होती है जब मैं इस डेटाफ्रेम को आरडीडी [लेबलड पॉइंट] में परिवर्तित करने का प्रयास करता हूं। मैं डेटाफ्रेम पंक्तियों को मैप करता हूं, लेकिन पंक्ति की विधि विधि किसी भी प्रकार को वापस लौटाती है, डेटाफ्रेम स्कीमा (वेक्टर) पर परिभाषित प्रकार नहीं। इसलिए, मैं एक एमएल मॉडल को प्रशिक्षित करने के लिए आरडीडी का निर्माण नहीं कर सकता।
एक टीएफ-आईडीएफ की गणना के बाद आरडीडी [लेबलडपॉइंट] प्राप्त करने का सबसे अच्छा विकल्प क्या है?
मैं इस त्रुटि मिलती है: त्रुटि: प्रकार तर्क (वेक्टर) के प्रकार प्रकार पैरामीटर (प्रकार टी) की उम्मीद प्रकार के अनुरूप नहीं है। वेक्टर के प्रकार पैरामीटर टाइप टी के अपेक्षित पैरामीटर से मेल नहीं खाते हैं: प्रकार वेक्टर में एक प्रकार का पैरामीटर है, लेकिन टाइप टी में कोई भी – Miguel
@ मिगुएल मुझे एक ही त्रुटि मिली है और [यहां] से एक अच्छा फिक्स मिला है (https: //community.hortonworks .com/प्रश्न/6020/टाइप-त्रुटि-जब-प्रयास-रैखिक-regression.html) आपको स्पार्क वेक्टर वर्ग को स्पष्ट रूप से आयात करने की आवश्यकता है क्योंकि स्कैला डिफ़ॉल्ट रूप से इसके अंतर्निर्मित वेक्टर प्रकार को आयात करता है। 'आयात org.apache.spark.mllib.linalg। {वेक्टर, वेक्टर}' और फिर क्रिस का कोड काम करेगा। – Ben