📅  最后修改于: 2023-12-03 15:02:27.591000             🧑  作者: Mango
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
图例放在左上角。最终的可视化效果如下图:
K 均值聚类是 Julia 中的一种常用算法,通过 Clustering
包可以方便地进行实现和调用。可视化结果则可以使用 Plots
包来完成。