Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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 KMeans(和平分KMeans)群集的错误/错误_Apache Spark_Cluster Analysis_Apache Spark Mllib - Fatal编程技术网

Apache spark KMeans(和平分KMeans)群集的错误/错误

Apache spark KMeans(和平分KMeans)群集的错误/错误,apache-spark,cluster-analysis,apache-spark-mllib,Apache Spark,Cluster Analysis,Apache Spark Mllib,我正在处理一个需要处理集群的数据 我知道Spark框架不会让我拥有一个集群;集群的最小数量为两个 我创建了一些伪随机数据来测试我的程序,我的程序显示了错误的结果,因为我的KMeans函数正在生成一个集群!怎么会?我不明白。是因为我的数据是随机的吗?我没有在我的kmeans上指定任何内容。这是处理K-Means的代码部分: kmeans = new BisectingKMeans(); model = kmeans.fit(dataset); //trains the k-means with t

我正在处理一个需要处理集群的数据

我知道Spark框架不会让我拥有一个集群;集群的最小数量为两个

我创建了一些伪随机数据来测试我的程序,我的程序显示了错误的结果,因为我的KMeans函数正在生成一个集群!怎么会?我不明白。是因为我的数据是随机的吗?我没有在我的kmeans上指定任何内容。这是处理K-Means的代码部分:

kmeans = new BisectingKMeans();
model = kmeans.fit(dataset); //trains the k-means with the dataset to create a model

clusterCenters = model.clusterCenters(); 

dataset.show(false);

for(Vector v : clusterCenters){
    System.out.println(v);
}
输出如下:

+----+----+------+
|File|Size|Volume|
+----+----+------+
|F1  |13  |1689  |
|F2  |18  |1906  |
|F3  |16  |1829  |
|F4  |14  |1726  |
|F5  |10  |1524  |
|F6  |16  |1844  |
|F7  |15  |1752  |
|F8  |12  |1610  |
|F9  |10  |1510  |
|F10 |11  |1554  |
|F11 |12  |1632  |
|F12 |13  |1663  |
|F13 |18  |1901  |
|F14 |13  |1686  |
|F15 |18  |1910  |
|F16 |19  |1986  |
|F17 |11  |1585  |
|F18 |10  |1500  |
|F19 |13  |1665  |
|F20 |13  |1664  |
+----+----+------+
only showing top 20 rows

[-1.7541523789077474E-16,2.0655699373151038E-15] //only one cluster center!!! why??
为什么会发生这种情况?我需要解决什么问题才能解决这个问题?只有一个簇会破坏我的程序对随机数据的处理,对分k-均值的正确输出通常只是一个簇


对分k-意味着您只能给出最大数量的簇。但如果结果没有改善,它可以提前停止。在您的情况下,将数据分为两个簇显然没有提高质量,因此不接受这种二分法。

啊,好的,我明白了!所以随机数据确实严重影响了我的模型。对于正常的真实数据,这种行为不应该发生,对吗?至少我希望如此。无论如何,谢谢你给我解释。有了理想的数据,就不会了。但是,如果数据只有一个簇,预处理不好,或者非常嘈杂,那么您可能会在真实数据上看到一个簇。你会惊讶地发现,用k-means这样的方法找不到有意义的集群。。。