如何为木地板文件申请kmeans?

如何为木地板文件申请kmeans?

我想对我的实木复合地板文件应用k均值。但是出现错误。

编辑

  

java.lang.ArrayIndexOutOfBoundsException:2

代码

val Data = sqlContext.read.parquet("/usr/local/spark/dataset/norm")
val parsedData = Data.rdd.map(s => Vectors.dense(s.getDouble(1),s.getDouble(2))).cache()

import org.apache.spark.mllib.clustering.KMeans 
val numClusters = 30
val numIteration = 1
 val userClusterModel = KMeans.train(parsedData,numClusters,numIteration)
val userfeature1 = parsedData.first 
val userCost = userClusterModel.computeCost(parsedData)
println("WSSSE for users: " + userCost)

如何解决此错误?

a123123aaaaa 回答:如何为木地板文件申请kmeans?

我相信您使用https://spark.apache.org/docs/latest/mllib-clustering.html#k-means作为构建K-Means模型的参考。

在示例中

val data = sc.textFile("data/mllib/kmeans_data.txt")
val parsedData = data.map(s => Vectors.dense(s.split(' ').map(_.toDouble))).cache()

data的类型为org.apache.spark.rdd.RDD。在您的情况下,sqlContext.read.parquet的类型为DataFrame。因此,您必须将数据帧转换为RDD才能执行拆分操作

要从Dataframe转换为RDD,您可以使用以下示例作为参考

val rows: RDD[Row] = df.rdd
,
    val parsedData = Data.rdd.map(s => Vectors.dense(s.getInt(0),s.getDouble(1))).cache()
本文链接:https://www.f2er.com/3071512.html

大家都在问