聚类分析是一种常用的无监督学习方法,旨在将样本数据划分为相似的群组或簇。在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均值聚类等多种方法进行聚类分析。在进行聚类分析之前,我们需要准备好要分析的数据集,并选择合适的聚类算法和参数。最后,我们可以通过树状图、散点图等方式来可视化聚类结果。
数据分析咨询请扫描二维码
《Python数据分析极简入门》 第2节 5 Pandas数学计算 importpandasaspdd=np.array([[81,&n ...
2024-11-23数据分析涉及多个方面的学习,包括理论知识和实践技能。以下是数据分析需要学习的主要方面: 基础知识: 数据分析的基本概念 ...
2024-11-22数据分析适合在多个单位工作,包括但不限于以下领域: 金融行业:金融行业对数据分析人才的需求非常大,数据分析师可以从事经 ...
2024-11-22数据分析是一种涉及从大量数据中提取有用信息和洞察力的过程。其工作内容主要包括以下几个方面: 数据收集与整理:数据分析师 ...
2024-11-22数据分析师需要掌握多种技能,以确保能够有效地处理和分析数据,并为业务决策提供支持。以下是数据分析师需要掌握的主要技能: ...
2024-11-22数据开发和数据分析是两个密切相关但又有所区别的领域。以下是它们的主要区别: 定义和目标: 数据开发:数据开发涉及数据的 ...
2024-11-22数据架构师是负责设计和管理企业数据架构的关键角色,其职责涵盖了多个方面,包括数据治理、数据模型设计、数据仓库构建、数据安 ...
2024-11-22数据分析师需要具备一系列技能,以确保能够有效地处理、分析和解释数据,从而支持决策制定。以下是数据分析师所需的关键技能: ...
2024-11-22数据分析师需要具备一系列技能,以确保能够有效地处理、分析和解释数据,从而支持决策制定。以下是数据分析师所需的关键技能: ...
2024-11-22数据分析师需要具备一系列的技能和能力,以确保能够有效地处理、分析和解释数据,从而支持业务决策。以下是数据分析师所需的主要 ...
2024-11-22需求持续增长 - 未来数据分析师需求将持续上升,企业对数据驱动决策的依赖加深。 - 预测到2025年,中国将需要高达220万的数据人 ...
2024-11-22《Python数据分析极简入门》 第2节 4 Pandas条件查询 在pandas中,可以使用条件筛选来选择满足特定条件的数据 importpanda ...
2024-11-22数据分析师的工作内容涉及多个方面,主要包括数据的收集、整理、分析和可视化,以支持商业决策和问题解决。以下是数据分析师的一 ...
2024-11-21数据分析师必须掌握的技能可以从多个方面进行归纳和总结。以下是数据分析师需要具备的主要技能: 统计学基础:数据分析师需要 ...
2024-11-21数据分析入门的难易程度因人而异,总体来看,入门并不算特别困难,但需要一定的学习和实践积累。 入门难度:数据分析入门相对 ...
2024-11-21数据分析是一项通过收集、整理和解释数据来发现有用信息的过程,它在现代社会中具有广泛的应用和重要性。数据分析能够帮助人们更 ...
2024-11-21数据分析行业正在迅速发展,随着技术的不断进步和数据量的爆炸式增长,企业对数据分析人才的需求也与日俱增。本文将探讨数据分析 ...
2024-11-21数据分析的常用方法包括多种技术,每种方法都有其特定的应用场景和优势。以下是几种常见的数据分析方法: 对比分析法:通过比 ...
2024-11-21企业数字化转型是指企业利用数字技术对其业务进行改造和升级,以实现提高效率、降低成本、创新业务模式等目标的过程。这一过程不 ...
2024-11-21数据分析作为一个备受追捧的职业领域,吸引着越来越多的女性加入其中。对于女生而言,在选择成为一名数据分析师时,行业选择至关 ...
2024-11-21