web-dev-qa-db-ja.com

「機能」フィールドは存在しません。 SparkML

Spark ML with Zeppelinでモデルを構築しようとしています。この領域は初めてなので、助けが必要です。正しいデータ型を列に設定し、最初に設定する必要があると思いますラベルとして列。どんな助けも大いに感謝します、ありがとう

val training = sc.textFile("hdfs:///ford/fordTrain.csv")
val header = training.first
val inferSchema = true  
val df = training.toDF

val lr = new LogisticRegression()
.setMaxIter(10)
.setRegParam(0.3)
.setElasticNetParam(0.8)

 val lrModel = lr.fit(df)

// Print the coefficients and intercept for multinomial logistic regression
println(s"Coefficients: \n${lrModel.coefficientMatrix}")
println(s"Intercepts: ${lrModel.interceptVector}")

私が使用しているcsvファイルのスニペットは次のとおりです。

IsAlert,P1,P2,P3,P4,P5,P6,P7,P8,E1,E2
0,34.7406,9.84593,1400,42.8571,0.290601,572,104.895,0,0,0,
14
Young4844

先ほどお話ししたように、features列がありません。これは、すべての予測変数を含むベクトルです。 VectorAssemblerを使用して作成する必要があります。

IsAlertはラベルで、他のすべての変数(p1、p2、...)は予測子変数です。features列を作成できます(実際には、features)作成者:

import org.Apache.spark.ml.feature.VectorAssembler
import org.Apache.spark.ml.linalg.Vectors

//creating features column
val assembler = new VectorAssembler()
  .setInputCols(Array("P1","P2","P3","P4","P5","P6","P7","P8","E1","E2"))
  .setOutputCol("features")


val lr = new LogisticRegression()
  .setMaxIter(10)
  .setRegParam(0.3)
  .setElasticNetParam(0.8)
  .setFeaturesCol("features")   // setting features column
  .setLabelCol("IsAlert")       // setting label column

//creating pipeline
val pipeline = new Pipeline().setStages(Array(assembler,lr))

//fitting the model
val lrModel = pipeline.fit(df)

参照: https://spark.Apache.org/docs/latest/ml-features.html#vectorassembler

13
vdep