k均值聚类


#我找到了一个网站,DATAtab,它提供了一个在线的 K-means 聚类分析计算器。在这个网站上,您可以执行以下步骤来进行 K-means 聚类分析:

  1. 复制您的数据到网站提供的表格中
  2. 选择多于一个的变量
  3. 选择您想要计算的簇(cluster)的数量

此外,DATAtab 还提供了用于确定最佳簇数量的肘部方法(Elbow Method)的集成,以及数据可视化功能,可以清晰地查看数据的聚类情况。您还可以将结果以不同的格式下载,以便进一步分析【40†source】【41†source】【42†source】。

您可以通过访问以下链接来使用这个工具:DATAtab - K-means Clustering Calculator

我发现了一个名为 Clustergrammer 的免费在线工具,它可以用于可视化和分析高维数据,如交互式和可共享的层次聚类热图。Clustergrammer 支持直观地探索高维数据,并提供多种可选的生物特定功能【50†source】。

要使用 Clustergrammer,您需要准备一个以制表符分隔的矩阵文件(.txt 或 .tsv 格式),然后上传到该工具【51†source】。Clustergrammer 支持不同大小的数据集,如小型矩阵(38x29)、中型矩阵(250x12)和大型矩阵(500x300)【52†source】。上传数据后,您将获得一个永久且可共享的链接,用于查看您的可视化结果【53†source】。

您可以访问 Clustergrammer 来使用这个工具。

在进行均值聚类(如 K-means 聚类)时,”Distance Type” 和 “Linkage Type” 这两个参数通常用于层次聚类,而不是 K-means 聚类。然而,如果你需要选择这些参数来辅助或可视化 K-means 聚类的结果,下面是一些指导:

  1. Distance Type:这决定了如何测量数据点之间的距离。对于均值聚类,常用的距离类型包括:

    • 欧几里得距离(Euclidean Distance):最常用的距离度量,适合多数情况。
    • 曼哈顿距离(Manhattan Distance):当数据的各个维度具有相同的单位或相同的重要性时适用。
  2. Linkage Type:这指的是在层次聚类中如何将数据点或数据点群组合起来。常见的类型包括:

    • 平均连锁(Average Linkage):计算不同群组中所有点对之间的平均距离。
    • 最近邻链锁(Single Linkage):计算不同群组中最近的点对之间的距离。

对于均值聚类(K-means),建议使用欧几里得距离平均连锁,因为这些方法通常与K-means聚类的直观概念相吻合。然而,最佳选择可能取决于您的具体数据和分析目标。

library(gplots)

假设你的数据存储在一个文本文件中,例如 ‘your_data_file.txt’

#data_file_path <- “可WGCNA - 整理 - 去零.txt” # 替换为你的文件路径
data_file_path <- “可WGCNA - 整理 - 去零 - 副本.txt” # 替换为你的文件路径

clusters_num <- 5 # 设置聚类的数量

读取数据

data <- read.table(data_file_path, header = TRUE, row.names = 1, sep = “\t”)
data_matrix <- as.matrix(data)

执行K-means聚类

kmeans_result <- kmeans(data_matrix, centers = clusters_num)

执行K-means聚类

#kmeans_result <- kmeans(data_matrix, centers = clusters_num)

计算每个簇中的基因数量

cluster_sizes <- table(kmeans_result$cluster)
print(cluster_sizes)

根据聚类结果排序数据

sorted_data <- data_matrix[order(kmeans_result$cluster), ]

定义颜色

my_palette <- colorRampPalette(c(“green”, “red”))(n = 299)

绘制热图

heatmap.2(sorted_data,
main = “K-means Clustering Heatmap”,
scale = “row”,
trace = “none”,
col = my_palette,
density.info = “none”,
tracecol = NA)

缩小基因名字体大小

heatmap.2(sorted_data,
main = “K-means Clustering Heatmap”,
scale = “row”,
trace = “none”,
col = my_palette,
density.info = “none”,
tracecol = NA,
cexRow = 0.5) # 调整基因名字体大小

或者,要完全删除基因名

heatmap.2(sorted_data,
main = “K-means Clustering Heatmap”,
scale = “row”,
trace = “none”,
col = my_palette,
density.info = “none”,
tracecol = NA,
labRow = NA) # 不显示基因名

for (i in 1:clusters_num) {
cluster_genes <- rownames(sorted_data)[kmeans_result$cluster == i]
cluster_data <- sorted_data[cluster_genes, ]
write.table(cluster_data,
file = paste0(“cluster_”, i, “.txt”),
sep = “\t”,
quote = FALSE,
col.names = NA)
}

library(ggplot2)
library(gplots)
library(reshape2)

假设以下是之前的代码部分

为每个簇生成折线图

for (i in 1:clusters_num) {
cluster_genes <- rownames(sorted_data)[kmeans_result$cluster == i]
cluster_data <- sorted_data[cluster_genes, ]

将行名(基因名)添加为数据框的一列

cluster_data_df <- as.data.frame(cluster_data)
cluster_data_df$Gene <- rownames(cluster_data_df)

将数据转换为长格式,适合ggplot2使用

long_data <- melt(cluster_data_df, id.vars = “Gene”)
names(long_data) <- c(“Gene”, “Condition”, “Expression”)

绘制折线图

p <- ggplot(long_data, aes(x = Condition, y = Expression, group = Gene)) +
geom_line() +
labs(title = paste(“Expression Patterns in Cluster”, i),
x = “Condition”,
y = “Expression Level”) +
theme_minimal()

显示图形

print(p)

可选择保存图形

ggsave(paste0(“cluster_”, i, “_line_plot.png”), p)

}

library(ggplot2)
library(reshape2)

假设已有的代码部分

仅为第一个聚类簇生成折线图

i <- 1
cluster_genes <- rownames(sorted_data)[kmeans_result$cluster == i]
cluster_data <- sorted_data[cluster_genes, ]

将行名(基因名)添加为数据框的一列

cluster_data_df <- as.data.frame(cluster_data)
cluster_data_df$Gene <- rownames(cluster_data_df)

将数据转换为长格式,适合ggplot2使用

long_data <- melt(cluster_data_df, id.vars = “Gene”)
names(long_data) <- c(“Gene”, “Condition”, “Expression”)

绘制折线图

p <- ggplot(long_data, aes(x = Condition, y = Expression, group = Gene)) +
geom_line() +
labs(title = paste(“Expression Patterns in Cluster”, i),
x = “Condition”,
y = “Expression Level”) +
theme_minimal()

显示图形

print(p)

可选择保存图形

ggsave(paste0(“cluster_”, i, “_line_plot.png”), p)


文章作者: 花粱
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 花粱 !
  目录