求以下实验的R语言代码:对商场200位客户使用kmeans聚类法和系统聚类法进行聚类,对聚类结果进行 可视化,并保存可视化结果,对两种聚类分析方法的聚类结果进行分析 数据集:mall.csv 数据属性描述: 字段名: Customerip Gender Age Annual Income (k$) Spending Score (1-100) 字段描述 顾容ID 性别 实验内容:1.载入数据、显示数据的维度,CustomerlD、Gender这两个变量按照字符型变量读入.其他三个变量按照数值型变量读入。2
时间: 2024-03-13 11:42:50 浏览: 94
以下是对商场客户进行k-means聚类和系统聚类分析的R语言代码,包括数据预处理、聚类分析、可视化和聚类结果分析等步骤:
```R
# 导入数据集
data <- read.csv("mall.csv", header = TRUE, stringsAsFactors = FALSE)
# 数据预处理
data <- na.omit(data)
data$Gender <- as.factor(data$Gender)
# 聚类分析
X <- data[, 3:5]
X_scaled <- scale(X)
set.seed(42)
kmeans_clust <- kmeans(X_scaled, centers = 5)
agglo_clust <- hclust(dist(X_scaled), method = "ward.D2")
agglo_clust <- cutree(agglo_clust, k = 5)
# 可视化聚类结果
library(ggplot2)
library(gridExtra)
kmeans_plot <- ggplot(data, aes(x = Annual.Income..k.., y = Spending.Score..1.100., color = as.factor(kmeans_clust$cluster))) + geom_point() + ggtitle("K-Means Clustering")
agglo_plot <- ggplot(data, aes(x = Annual.Income..k.., y = Spending.Score..1.100., color = as.factor(agglo_clust))) + geom_point() + ggtitle("Agglomerative Clustering")
grid.arrange(kmeans_plot, agglo_plot, nrow = 1)
# 聚类结果分析
library(cluster)
library(factoextra)
library(dplyr)
# K-Means
cat("K-Means Cluster Sizes\n")
cat("=====================\n")
table(kmeans_clust$cluster)
cat("\nK-Means Cluster Means\n")
cat("=====================\n")
kmeans_means <- cbind(CustomerID = data$CustomerID, as.data.frame(X_scaled), kmeans_clust$cluster) %>%
group_by(kmeans_clust.cluster) %>%
summarize_all(mean) %>%
select(-kmeans_clust.cluster)
print(kmeans_means)
cat("\nK-Means Cluster Silhouette Scores\n")
cat("================================\n")
silhouette(kmeans_clust$cluster, dist(X_scaled))$silhouette
# Agglomerative
cat("\nAgglomerative Cluster Sizes\n")
cat("==========================\n")
table(agglo_clust)
cat("\nAgglomerative Cluster Means\n")
cat("==========================\n")
agglo_means <- cbind(CustomerID = data$CustomerID, as.data.frame(X_scaled), agglo_clust) %>%
group_by(agglo_clust) %>%
summarize_all(mean) %>%
select(-agglo_clust)
print(agglo_means)
cat("\nAgglomerative Cluster Silhouette Scores\n")
cat("=====================================\n")
silhouette(agglo_clust, dist(X_scaled))$silhouette
```
代码说明:
1. 使用`read.csv()`函数导入数据集,并将`Gender`变量转换为因子型变量,去除缺失值。
2. 提取数值型变量`Age`, `Annual Income (k$)`和`Spending Score (1-100)`作为聚类分析的输入变量,并对其进行标准化处理。
3. 使用`kmeans()`函数和`hclust()`函数对数据进行k-means聚类和系统聚类分析。
4. 使用`ggplot2`库生成散点图,将聚类结果可视化。
5. 使用`cluster`库和`factoextra`库进行聚类结果分析,例如计算聚类簇的大小、聚类均值和轮廓系数等。
6. 输出聚类结果分析的结果。
希望这个R语言代码可以帮助你完成商场客户聚类分析的实验。
阅读全文