Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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
Machine learning 在某些数据集上改进K均值_Machine Learning_K Means - Fatal编程技术网

Machine learning 在某些数据集上改进K均值

Machine learning 在某些数据集上改进K均值,machine-learning,k-means,Machine Learning,K Means,任何人都知道如何调整一个简单的K-means算法来处理数据集。这个问题的一个可能的解决方案是向数据集添加另一个维度,这两个类之间有一个拆分 显然,这在许多情况下并不适用,但如果您对数据应用了某种降维,那么这可能是值得研究的。在仍然使用k-means的情况下处理该形式数据的最直接方法是使用k-means的核化版本。JSAT库中存在2个it实现(参见此处) 正如Nicholas所说,另一个选择是创建一个新的功能空间,在其中运行k-means。然而,这需要一些关于您将要聚类的数据类型的先验知识 在那之

任何人都知道如何调整一个简单的K-means算法来处理数据集。

这个问题的一个可能的解决方案是向数据集添加另一个维度,这两个类之间有一个拆分


显然,这在许多情况下并不适用,但如果您对数据应用了某种降维,那么这可能是值得研究的。

在仍然使用k-means的情况下处理该形式数据的最直接方法是使用k-means的核化版本。JSAT库中存在2个it实现(参见此处)

正如Nicholas所说,另一个选择是创建一个新的功能空间,在其中运行k-means。然而,这需要一些关于您将要聚类的数据类型的先验知识


在那之后,你真的需要换一种不同的算法。k-means是一个简单的算法,它对世界做出简单的假设,当这些假设被严重违反时(非线性可分离簇就是这些假设之一),那么你只需要接受这一点,然后选择一个更合适的算法

K-means并不是那么简单,您需要自己实现一个距离函数。您始终可以创建一个距离函数,将这些点很好地分组。此外,crossvalidated.SE可能是一个更好的选择。感谢您的回答!我想到了一个解决办法。根据定义,我有两个类(红色和蓝色)。如果我在K-means中增加K,假设为5,然后在合并使argmin函数最小化的两个簇时逐渐减小它(一个接一个),会怎么样?(在这种情况下,函数将随着K的减少而增加,但我将迭代这些对,并找到使其增加最少的对)。希望我清楚。我会考虑一个距离函数,可以匹配这个例子。交叉验证是否用于找到此距离函数的最佳形式?您可以始终使用不同的聚类算法,如DBSCAN,它可以像您提供的示例那样对非凸数据进行聚类。@CommuSoft k-mean非常简单,不应与其他距离函数一起使用,因为它使方差最小,而不是距离最小。。。然而,核k-均值是可能的(最小化核空间中的方差),并且可能解决这个问题。