2016-11-16 4 views
0

SparkML TF-IDFアルゴリズムを使用して、いくつかのFeature Vectorを取得しました。今私は "idfFeatures"の列にベクトルを取得したいと思います。DataFrameでVectorを取得する方法

enter image description here

私のコードは次のとおりです。

scala.MatchError: [(262144,[622,4200,7303,8501......,2.1972245773362196,1.2809338454620642])] (of class org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema) 
at scala.TFIDFTest2$$anonfun$1.apply(TFIDFTest2.scala:37) 

Error:(38, 24) type Vector takes type parameters 
    case Row(vector: Vector) => 
       ^

私はStringにベクトルを変更する場合は、別のバグがあります:

val vectors = allDF.select("idfFeatures").map{ 
    case Row(vector: Vector) => 
    vector 
} 
vectors.foreach(println(_)) 

がコンソールにバグがあります

ベクターはどのように入手できますか?

答えて

1

スパーク1.1:

import org.apache.spark.mllib.linalg.Vector 

スパーク2.0:

import org.apache.spark.ml.linalg.Vector 

例:

// https://spark.apache.org/docs/latest/ml-features.html#tf-idf 

import org.apache.spark.ml.feature.{HashingTF, IDF, Tokenizer} 

val sentenceData = spark.createDataFrame(Seq(
    (0, "Hi I heard about Spark"), 
    (0, "I wish Java could use case classes"), 
    (1, "Logistic regression models are neat") 
)).toDF("label", "sentence") 

val tokenizer = new Tokenizer().setInputCol("sentence").setOutputCol("words") 
val wordsData = tokenizer.transform(sentenceData) 
val hashingTF = new HashingTF() 
    .setInputCol("words").setOutputCol("rawFeatures").setNumFeatures(20) 
val featurizedData = hashingTF.transform(wordsData) 

val idf = new IDF().setInputCol("rawFeatures").setOutputCol("features") 
val idfModel = idf.fit(featurizedData) 

val idf = new IDF().setInputCol("rawFeatures").setOutputCol("features") 
val idfModel = idf.fit(featurizedData) 
val rescaledData = idfModel.transform(featurizedData) 
import org.apache.spark.ml.linalg.Vector 
import org.apache.spark.sql.Row 

rescaledData.select("features").rdd.map { case Row(v: Vector) => v}.first 
+0

は、私がスパーク2.0でそれを追加します。まだバグを印刷しています。ベクトル[A、[B]、[C]]を3列(columnA、columnB、columnC)に分割できますか? –

+0

非常に便利です!なぜVectorをトップにインポートできないのですか? –

+0

できます。しかし、上の部分は、ドキュメントのコピーされた例です。 –

関連する問題