📜  Julia 中的 K 均值聚类(1)

📅  最后修改于: 2023-12-03 15:02:27.591000             🧑  作者: Mango

Julia 中的 K 均值聚类

K 均值聚类是一种常用的机器学习算法,在 Julia 中也有不少实现。

安装

使用 Pkg 包管理器安装 Clustering 包。

using Pkg
Pkg.add("Clustering")
使用
生成随机数据

我们先生成一组随机数据,作为演示用。

using Random
Random.seed!(1234)  # 设置随机数种子,以便结果可重复
X = rand(100, 2)    # 生成 100 个二维数据点
简单示例

接下来,我们使用 KMeans 函数进行聚类。

using Clustering
KMeansResult = kmeans(X', 3)   # 聚成 3 类

上面的代码中,我们将数据点转置后进行聚类。这是因为 kmeans 函数要求输入的数据应该是每一列代表一个数据点,每一行代表一个维度。

聚类结果的类型是 KMeansResult,包含了聚类中心和每个数据点所属类别等信息。具体可以用下面的语句查看。

KMeansResult.centers         # 聚类中心
KMeansResult.assignments     # 每个数据点所属的类别
KMeansResult.durations       # 运行时间等信息
聚类可视化

我们可以使用 Plots 包将聚类结果可视化。首先导入 Plots 包。

using Plots

然后使用 scatter 函数画出散点图,并根据每个数据点所属的类别进行着色(颜色随机)。

scatter(X[:, 1], X[:, 2], group=KMeansResult.assignments, color=:auto, legend=:topleft)

代码解释:

  • X[:, 1] 访问矩阵 X 的所有行、第一列,表示所有数据点的第一个维度。
  • X[:, 2] 访问矩阵 X 的所有行、第二列,表示所有数据点的第二个维度。
  • group=KMeansResult.assignments 指定每个数据点所属的类别。
  • color=:auto 自动生成颜色。
  • legend=:topleft 图例放在左上角。

最终的可视化效果如下图:

kmeans_result.png

总结

K 均值聚类是 Julia 中的一种常用算法,通过 Clustering 包可以方便地进行实现和调用。可视化结果则可以使用 Plots 包来完成。