1
私のデータを読み込み、基本的な線形回帰を行いたいと思います。まず、フィーチャーの列を作成するには、VectorAssembler
を使用する必要があります。ただし、assembler.transform(df)
を使用した場合、はdf
で、DataSet
となります。私はdf.toDS
を試しましたが、value toDS is not a member of org.apache.spark.sql.DataFrame
となります。確かに、それはorg.apache.spark.sql.DatasetHolder
のメンバーです。Spark 2.0 - DataFrameをDataSetに変換する
ここで何が間違っていますか?
package main.scala
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import org.apache.spark.sql.functions._
import org.apache.spark.sql.SQLContext
import org.apache.spark.sql.DatasetHolder
import org.apache.spark.ml.regression.LinearRegression
import org.apache.spark.ml.feature.RFormula
import org.apache.spark.ml.feature.VectorAssembler
import org.apache.spark.ml.linalg.Vectors
object Analyzer {
def main(args: Array[String]) {
val conf = new SparkConf()
val sc = new SparkContext(conf)
val sqlContext = new SQLContext(sc)
import sqlContext.implicits._
val df = sqlContext.read
.format("com.databricks.spark.csv")
.option("header", "false")
.option("delimiter", "\t")
.option("parserLib", "UNIVOCITY")
.option("inferSchema", "true")
.load("data/snap/*")
val assembler = new VectorAssembler()
.setInputCols(Array("own", "want", "wish", "trade", "comment"))
.setOutputCol("features")
val df1 = assembler.transform(df)
val formula = new RFormula().setFormula("rank ~ own + want + wish + trade + comment")
.setFeaturesCol("features")
.setLabelCol("rank")
}
}