聚类分析是一种常用的无监督学习方法,旨在将样本数据划分为相似的群组或簇。在R中,有多种聚类分析方法可供选择,包括层次聚类和K均值聚类等。本文将介绍如何使用R进行聚类分析。
在进行聚类分析之前,需要先准备好要分析的数据集。数据通常以矩阵或数据框的形式呈现,其中每行代表一个样本,每列代表一个特征。在这里,我们将使用UCI Machine Learning Repository上的Iris数据集作为示例。该数据集包含150个样本,每个样本有4个特征:花萼长度、花萼宽度、花瓣长度和花瓣宽度。首先,我们需要从网络上下载数据集并导入到R中:
iris <- read.csv("https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data", header = FALSE)
colnames(iris) <- c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width", "Species")
层次聚类是一种将样本逐步分组的方法,可以形成一个树形结构,称为树状图。在R中,可以使用hclust
函数来执行层次聚类分析。hclust
函数需要一个距离矩阵或相似性矩阵作为输入,因此我们需要首先计算样本之间的距离或相似性矩阵。在这里,我们将使用欧几里得距离来度量样本之间的距离:
dist_mat <- dist(iris[, 1:4], method = "euclidean")
接下来,我们可以使用hclust
函数对距离矩阵进行聚类分析:
hc_res <- hclust(dist_mat, method = "ward.D2")
其中,method = "ward.D2"
表示使用Ward方法进行聚类分析。Ward方法尝试最小化群组内方差的增加量,因此通常能够产生更紧密的群组。执行完聚类分析后,我们可以使用plot
函数来绘制树状图:
plot(hc_res)
从树状图中可以看出,Iris数据集可以被分成3个主要簇。我们还可以使用cutree
函数将每个样本分配到不同的簇中:
cluster_labels <- cutree(hc_res, k = 3)
其中,k = 3
表示我们期望将数据分为3个簇。可以通过以下方式查看每个样本所属的簇:
head(cluster_labels)
#> [1] 1 1 1 1 1 1
K均值聚类是一种迭代方法,旨在将样本分为k个不同的簇,使得每个簇内部的样本之间的距离最小化。在R中,可以使用kmeans
函数来执行K均值聚类分析。kmeans
函数需要指定要分成的簇数,并且通常需要多次运行以避免收敛于局部最小值。
kmeans_res <- kmeans(iris[, 1:4], centers = 3, nstart = 20)
其中,centers = 3
表示我们期望将数据分为3个簇,nstart = 20
表示我们希
望执行20次随机初始化来避免局部最小值。
K均值聚类分析的输出包括每个样本所属的簇标签和每个簇的中心点。我们可以通过以下方式查看分配到每个簇的样本数量:
table(kmeans_res$cluster)
#>
#> 1 2 3
#> 38 50 62
从结果可以看出,Iris数据集被成功地分成了3个主要簇,每个簇都有相似的特征值。
除了树状图之外,我们还可以使用其他方法来可视化聚类结果。例如,我们可以使用ggplot2包中的函数绘制散点图,并使用不同的颜色表示不同的簇:
library(ggplot2)
iris_clustered <- cbind(iris, cluster_labels)
ggplot(iris_clustered, aes(x = Sepal.Length, y = Petal.Width, color = factor(cluster_labels))) +
geom_point()
从散点图可以看出,不同簇的样本在花萼长度和花瓣宽度之间存在明显的差异。
聚类分析是一种有用的无监督学习方法,可以帮助我们发现数据中隐藏的结构。在R中,我们可以使用层次聚类和K均值聚类等多种方法进行聚类分析。在进行聚类分析之前,我们需要准备好要分析的数据集,并选择合适的聚类算法和参数。最后,我们可以通过树状图、散点图等方式来可视化聚类结果。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在数据分析领域,Excel作为一种普及率极高且功能强大的工具,无疑为无数专业人士提供了便捷的解决方案。尽管Excel自带了丰富的功 ...
2025-01-17在这个瞬息万变的时代,许多人都在寻找能让他们脱颖而出的职业。而数据分析师,作为大数据和人工智能时代的热门职业,自然吸引了 ...
2025-01-14Python作为一门功能强大的编程语言,已经成为数据分析和可视化领域的重要工具。无论你是数据分析的新手,还是经验丰富的专业人士 ...
2025-01-10完全靠数据决策,真的靠谱吗? 最近几年,“数据驱动”成了商界最火的关键词之一,但靠数据就能走天下?其实不然!那些真正成功 ...
2025-01-09SparkSQL 结构化数据处理流程及原理是什么?Spark SQL 可以使用现有的Hive元存储、SerDes 和 UDF。它可以使用 JDBC/ODB ...
2025-01-09在如今这个信息爆炸的时代,数据已然成为企业的生命线。无论是科技公司还是传统行业,数据分析正在深刻地影响着商业决策以及未来 ...
2025-01-08“数据为王”相信大家都听说过。当前,数据信息不再仅仅是传递的媒介,它成为了驱动经济发展的新燃料。对于企业而言,数据指标体 ...
2025-01-07在职场中,当你遇到问题的时候,如果感到无从下手,或者抓不到重点,可能是因为你掌握的思维模型不够多。 一个好用的思维模型, ...
2025-01-06在现代企业中,数据分析师扮演着至关重要的角色。每天都有大量数据涌入,从社交媒体到交易平台,数据以空前的速度和规模生成。面 ...
2025-01-06在职场中,许多言辞并非表面意思那么简单,有时需要听懂背后的“潜台词”。尤其在数据分析的领域里,掌握常用术语就像掌握一门新 ...
2025-01-04在当今信息化社会,数据分析已成为各行各业的核心驱动力。它不仅仅是对数字进行整理与计算,而是在数据的海洋中探寻规律,从而指 ...
2025-01-03又到一年年终时,各位打工人也迎来了展示成果的关键时刻 —— 年终述职。一份出色的年终述职报告,不仅能全面呈现你的工作价值, ...
2025-01-03在竞争激烈的商业世界中,竞品分析对于企业的发展至关重要。今天,我们就来详细聊聊数据分析师写竞品分析的那些事儿。 一、明确 ...
2025-01-03在数据分析的江湖里,有两个阵营总是争论不休。一派信奉“大即是美”,认为数据越多越好;另一派坚守“小而精”,力挺质量胜于规 ...
2025-01-02数据分析是一个复杂且多维度的过程,从数据收集到分析结果应用,每一步都是对信息的提炼与升华。可视化分析结果,以图表的形式展 ...
2025-01-02在当今的数字化时代,数据分析师扮演着一个至关重要的角色。他们如同现代企业的“解密专家”,通过解析数据为企业提供决策支持。 ...
2025-01-02数据分析报告至关重要 一份高质量的数据分析报告不仅能够揭示数据背后的真相,还能为企业决策者提供有价值的洞察和建议。 年薪 ...
2024-12-31数据分析,听起来好像是技术大咖的专属技能,但其实是一项人人都能学会的职场硬核能力!今天,我们来聊聊数据分析的核心流程,拆 ...
2024-12-31提到数据分析,你脑海里可能会浮现出一群“数字控”抱着电脑,在海量数据里疯狂敲代码的画面。但事实是,数据分析并没有你想象的 ...
2024-12-31关于数据分析师是否会成为失业高危职业,近年来的讨论层出不穷。在这个快速变化的时代,技术进步让人既兴奋又不安。今天,我们从 ...
2024-12-30