多维数据的K均值聚类

如果数据集包含440个对象和8个属性(数据集来自UCI机器学习库)。那么如何为这样的数据集计算质心呢?(批发客户数据)https://archive.ics.uci.edu/ml/datasets/Wholesale+customers

如果我计算每行的值的平均值,那会是质心吗?我如何在Matlab中绘制结果聚类呢?


回答:

好的,首先,在数据集中,每一行对应数据中的一个单一示例,你有440行,这意味着数据集包含440个示例。每列包含该特定特征(或你称之为属性)的值,例如,你的数据集中第1列包含特征Channel的值,第2列包含特征Region的值,依此类推。

K均值聚类

现在对于K均值聚类,你需要指定聚类的数量(K均值中的K)。假设你想要K=3个聚类,那么初始化K均值的最简单方法是从你的数据集中随机选择3个示例(即从你拥有的440行中随机抽取3行)作为你的质心。现在这3个示例就是你的质心

你可以把你的质心想象成3个箱子,你希望将数据集中的每个示例放入最接近的箱子中(通常通过欧几里得距离来衡量;检查Matlab中的norm函数)。

在第一轮将所有示例放入最接近的箱子后,你通过计算各自箱子中所有示例的mean来重新计算质心。你重复将所有示例放入最接近的箱子的过程,直到数据集中的没有示例移动到另一个箱子为止。

一些Matlab的起点

你可以通过X = load('path/to/the/dataset', '-ascii');来加载数据

在你的情况下,X将是一个440x8的矩阵。

你可以通过distance = norm(example - centroid1);计算一个示例到质心的欧几里得距离,其中examplecentroid1的维度都是1x8

重新计算质心将如下进行,假设你已经完成了K均值的一次迭代,并将所有示例放入了各自最接近的箱子。假设Bin1现在包含所有最接近centroid1的示例,因此Bin1的维度为127x8,这意味着440个示例中有127个在这个箱子中。为了计算下一轮迭代的质心位置,你可以执行centroid1 = mean(Bin1);。你将对其他箱子进行类似的操作。

至于绘图,你需要注意你的数据集包含8个特征,这意味着8个维度,无法可视化。我建议你创建或寻找一个仅包含2个特征的(虚拟)数据集,这样就可以使用Matlab的plot()函数进行可视化了。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注