首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kmeans Spark ML

Kmeans Spark ML
EN

Stack Overflow用户
提问于 2017-01-18 19:33:07
回答 1查看 542关注 0票数 0

我想使用Spark ML执行KMeans。输入是libsvm数据集:

代码语言:javascript
复制
val spark = SparkSession.builder.master("local").appName("my-spark-app").getOrCreate()
  // Start time
  //val intial_Data=spark.read.option("header",true).csv("C://sample_lda_data.txt")
  val dataset = spark.read.format("libsvm").load("C:\\spark\\data\\mllib\\sample_kmeans_data.txt")
  // Trains a k-means model.
  val kmeans = new KMeans().setK(2).setSeed(1L)
  val model = kmeans.fit(dataset)

  // Evaluate clustering by computing Within Set Sum of Squared Errors.
  val WSSSE = model.computeCost(dataset)
  println(s"Within Set Sum of Squared Errors = $WSSSE")

  // Shows the result.
  println("Cluster Centers: ")
  model.clusterCenters.foreach(println)

因此,我想使用csv文件并通过Spark ML应用KMeans。我这样做了:

代码语言:javascript
复制
 val intial_Data=spark.read.option("header",true).csv("C://sample_lda_data.txt")
        val arrayCol= array(inputData.columns.drop(1).map(col).map(_.cast(DoubleType)): _*)
                    import spark.implicits._
                    // select array column and first column, and map into LabeledPoints
                    val result = inputData.select(col("col1").cast(DoubleType), arrayCol).map(r => LabeledPoint(r.getAs[Double](0),Vectors.dense(r.getAs[WrappedArray[Double]](1).toArray)))
                    // Trains a k-means model
                    val kmeans = new KMeans().setK(2)
        val model = kmeans.fit(result)
          // Evaluate clustering by computing Within Set Sum of Squared Errors.
      val WSSSE = model.computeCost(dataset)
      println(s"Within Set Sum of Squared Errors = $WSSSE")

      // Shows the result.
      println("Cluster Centers: ")
      model.clusterCenters.foreach(println)

我尝试将csv文件转换为Dataset[LabledPoint]

我的转换正确吗?

EN

回答 1

Stack Overflow用户

发布于 2017-10-27 19:49:47

在spark 2中,我们使用的是ML包而不是MLlib。在流水线模型中工作的数据集和ML流。你需要做的是创建一个数据集,并创建两列特征,标签。特征是需要输入到算法中的特征的向量。另一个列标签是目标列。要制作特征列,你只需要使用向量汇编程序来组装你想要使用的所有特征。如果您有一个目标列,则将其重命名为label。在将这个数据集拟合到算法中之后,你将得到你的模型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41718355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档