1、の概念
スパースベクトルとベクトル緻密で疎ベクトルのベクトル差の密ベクトル表現である:集中ベクトルの値は、以下のような指標および値からなる二つの平行なアレイによって通常のダブルアレイかなり疎ベクトルである:ベクター(1.0、0.0、スパースベクトル形式で表される4の1.0、3.0)緻密な形式[1.0,0.0,1.0,3.0]を示し、[1.0,1.0,3.0]、4、[0,2](として表されます)長さ(要素の数)、[0,2]は、[1.0,1.0,3.0]は値の配列は、位置ベクトル0を示す値が1.0 1.0,2位置の値である、配列インデックスであり、3の位置値は3.0であり、他の位置はゼロであります
2 [作成
org.apache.spark.mllib.linalgインポート{ベクトル、ベクトル}
//密ベクトル(1.0、0.0、3.0)を作成します。
ヴァルDV:ベクター= Vectors.dense(1.0、0.0、3.0)
//その指数と非ゼロのエントリに対応する値を指定することによって、スパースベクトル(1.0、0.0、3.0)を作成します。
ヴァルSV1:ベクター= Vectors.sparse(3、配列(0,2)、アレイ(1.0、3.0))
//その非ゼロエントリを指定することによって、スパースベクトル(1.0、0.0、3.0)を作成します。
ヴァルSV2:ベクター= Vectors.sparse(3、配列((0、1.0)、(2、3.0)))
図3は、コードセグメントは、HashingTFした単語は、スパースベクトルに単語がヒットした回数の大きさを変換します。参考住所:https://github.com/asker124143222/spark-demo
ヴァルトレーニング:DATAFRAME = lineRDD.map(ライン=> {
ヴァル列:配列[文字列] = line.split( "")
(strings.length == 3){場合
(文字列(0)、列(1)、ストリング(2).toDouble)
}
他{
( "-1"、strings.mkString(」「)、0.0)
}
。})フィルタ(S => s._1.equals(! " - 1"))
.toDF( "ID"、 "テキスト"、 "ラベル")
//変圧器、コンバータ、文字の解像度は、入力テキストを変換し、小回りに言葉を書き、スペースで区切っ
ヴァルトークナイザを:トークナイザトークナイザ新しい新=()
.setInputCol(「テキスト」)
.setOutputCol(「言葉」)
//変圧器、変換器は、単語頻度に変換語にハッシュ、ハッシュ方式を変換する、ベクター機能に変換
ヴァルhashTF:=新しい新しいHashingTFのHashingTF()
.setNumFeatures(1000)//デフォルト値は18である^ 2
.setInputCol( tokenizer.getOutputCol).setOutputCol( "フィーチャー")
hashingTF生成スパースベクトルのような//プリントルック
ヴァルwordsData = tokenizer.transform(トレーニング)
ヴァルhashData = hashTF.transform(wordsData)
hashData.collect()。foreachの(のprintln)
// [0、JAVAなぜHello Worldの、1.0、WrappedArray(なぜ、こんにちは、世界、ジャワ)、(1000年、[48150967973]、[1.0,1.0,1.0,1.0])]
// 1000年ベクトル長、たとえハッシュバケット数、および一貫した値setNumFeaturesは、インデックスは[48150967973]、すなわち、ハッシュバケットのインデックス値は、ハッシュ・バケット・ヒットの数である、1.0であります