Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 使用Spark MLlib KMeans从数据预测集群_Apache Spark_K Means_Apache Spark Mllib - Fatal编程技术网

Apache spark 使用Spark MLlib KMeans从数据预测集群

Apache spark 使用Spark MLlib KMeans从数据预测集群,apache-spark,k-means,apache-spark-mllib,Apache Spark,K Means,Apache Spark Mllib,我已经根据我的数据功能生成了我的集群中心,比如“Kmeans.data.txt”,如您在 这是使用Spark MLib中的KMeans执行的 clusters.clusterCenters.foreach(println) 你知道如何从这些数据中预测聚类吗?这很简单,如果你阅读,你会注意到它有两个构造函数,其中一个: 新的KMeansModel(群集中心:数组[向量]) 因此,可以实例化具有KMeans质心的对象。我在下面展示一个例子 import org.apache.spark.mlli

我已经根据我的数据功能生成了我的集群中心,比如“Kmeans.data.txt”,如您在

这是使用Spark MLib中的KMeans执行的

clusters.clusterCenters.foreach(println)

你知道如何从这些数据中预测聚类吗?

这很简单,如果你阅读,你会注意到它有两个构造函数,其中一个:

新的KMeansModel(群集中心:数组[向量])

因此,可以实例化具有
KMeans
质心的对象。我在下面展示一个例子

import org.apache.spark.mllib.clustering.KMeansModel
导入org.apache.spark.mllib.linalg.Vectors
val rdd=sc.parallelize(列表(
密集向量(数组(-0.1,0.0,0.0)),
向量.稠密(数组(9.0,9.0,9.0)),
密集向量(数组(3.0,2.0,1.0)))
val质心=阵列(
密集向量(数组(0.0,0.0,0.0)),
向量.稠密(数组(0.1,0.1,0.1)),
向量.稠密(数组(0.2,0.2,0.2)),
向量.稠密(数组(9.0,9.0,9.0)),
向量.稠密(数组(9.1,9.1,9.1)),
向量.稠密(数组(9.2,9.2,9.2)))
val模型=新KMeansModel(簇中心=质心)
模型预测(rdd).take(10)
//res13:Array[Int]=数组(0,3,2)

摘自从中检索到的KMean MLlib群集代码片段


谢谢在您给出的示例中,我不清楚您定义的质心,因为KMean模型有助于首先从数据点确定群集中心,然后我询问了如何在对解析数据执行预测时获得群集。您的假设不正确,
KMeans
是实际训练模型并返回
KMeansModel
对象的类,因此如果您已经有质心,您可以使用其构造函数之一实例化模型。@user844518我的意思是,您想找到ks的数量吗?我很困惑。
import org.apache.spark.mllib.clustering.KMeans
import org.apache.spark.mllib.linalg.Vectors

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

// Cluster the data into two classes using KMeans
val numClusters = 2
val numIterations = 20
val clusters = KMeans.train(parsedData, numClusters, numIterations)

// here is what I added to predict data points that are within the clusters
clusters.predict(parsedData).foreach(println)