2017-06-01 7 views
0

ヘッダーを含み、フィールドを含むデータセットにPCAを適用しようとしています ここで使用したコードは、PCAを適用する特定の列を選択できるヘルプです。 //更新されたバージョン Apache Sparkで特定の列にPCAを適用する

val inputMatrix = sc.textFile("C:/Users/mhattabi/Desktop/Realase of 01_06_2017/TopDrive_WithoutConstant.csv").map { line => 
    val values = line.split(",").map(_.toDouble) 
    Vectors.dense(values) 
} 

val mat: RowMatrix = new RowMatrix(inputMatrix) 
val pc: Matrix = mat.computePrincipalComponents(4) 
// Project the rows to the linear space spanned by the top 4 principal components. 

val projected: RowMatrix = mat.multiply(pc) 

私は、pricipalコンポーネントの私は、CSVファイルでこれを保存し、header.Anyは、多くの感謝を助ける追加したい質問をこれを得た。この

val spark = SparkSession.builder.master("local").appName("my-spark-app").getOrCreate() 
val dataframe = spark.read.format("com.databricks.spark.csv") 

val columnsToUse: Seq[String] = Array("Col0","Col1", "Col2", "Col3", "Col4").toSeq 
val k: Int = 2 

val df = spark.read.format("csv").options(Map("header" -> "true", "inferSchema" -> "true")).load("C:/Users/mhattabi/Desktop/donnee/cassandraTest_1.csv") 

val rf = new RFormula().setFormula(s"~ ${columnsToUse.mkString(" + ")}") 
val pca = new PCA().setInputCol("features").setOutputCol("pcaFeatures").setK(k) 

val featurized = rf.fit(df).transform(df) 
//prinpal component 
val principalComponent = pca.fit(featurized).transform(featurized) 
principalComponent.select("pcaFeatures").show(4,false) 

+-----------------------------------------+ 
|pcaFeatures        | 
+-----------------------------------------+ 
|[-0.536798281241379,0.495499034754084] | 
|[-0.32969328815797916,0.5672811417154808]| 
|[-1.32283465170085,0.5982789033642704] | 
|[-0.6199718696225502,0.3173072633712586] | 
+-----------------------------------------+ 

を実行しようとしました どんな助けもありがとう。

どうもありがとう

+0

それはどのようになる教えてください! – eliasah

+0

@eliasah編集した質問に追加した内容を確認してください –

+0

私は更新を取得するかどうかわかりません...私にとっては新しい質問のようであり、更新ではないようです。もしそうなら、回答を受け入れて新しい質問をしてください。 – eliasah

答えて

2

あなたのヘッダ入力ファイルのどこかにある:

import org.apache.spark.ml.feature.{RFormula, PCA} 

val columnsToUse: Seq[String] = ??? 
val k: Int = ??? 

val df = spark.read.format("csv").options(Map("header" -> "true", "inferSchema" -> "true")).load("/tmp/foo.csv") 

val rf = new RFormula().setFormula(s"~ ${columnsToUse.mkString(" + ")}") 
val pca = new PCA().setInputCol("features").setK(k) 

val featurized = rf.fit(df).transform(df) 
val projected = pca.fit(featurized).transform(featurized) 
0

java.lang.NumberFormatException: For input string: "DateTime"

それはあなたの入力ファイルであなたがDoubleに変換しようとした値DateTimeがあることを意味します。

は、おそらくそれはあなたがこのケースでRFormulaを使用することができます

+0

はい、私が知りたいのは、入力ファイルからspecefic列を選択することです。特定の列が選択されています、ありがとうございます。 –

関連する問題