【问题标题】:K-means clustering interpretationK-means 聚类解释
【发布时间】:2019-11-25 04:09:35
【问题描述】:

我有 3 个带有“Av. Mon. Hrs”、“Sat. Lvl”、“Last Eval”的集群对图,并通过以下代码找到了一个矩阵图。

library("ggplot2") # Expanded plotting functionality over "lattice" package
x<-cbind(HR_left$average_montly_hours,HR_left$satisfaction_level,HR_left$last_evaluation)
kmfit<-kmeans(x,3,nstart=25) 
# Find the best 3 clusters using 25 random sets of (distinct) rows in x as initial centres.
pairs(x,col=(kmfit$cluster), labels=c("Av. Mon. Hrs","Sat. Lvl","Last Eval."))

上面写着

  • 集群 1:配对图将此集群描述为工作量低 平均每月员工小时数、中等满意度范围和 低最后评价。
  • 集群 2:从配对图中,该集群是 特点是每月工作时间高、满意度非常低和高 评估。
  • 集群 3:从配对图中,该集群是 特点是每月工作时间高、满意度高、 评估。

但我不明白关于它们如何解释这三个发现的配对图。

library(readr)
HR_comma_sep <- read_csv("https://stluc.manta.uqcloud.net/mdatascience/public/datasets/HumanResourceAnalytics/HR_comma_sep.csv")
HR_left<-HR_comma_sep[HR_comma_sep$left==1,]

library("ggplot2") # Expanded plotting functionality over "lattice" package 

 x<-cbind(HR_left$average_montly_hours,HR_left$satisfaction_level,HR_left$last_evaluation) 
 kmfit<-kmeans(x,3,nstart=25) 
 # Find the best 3 clusters using 25 random sets of (distinct) rows in x as initial centres. 

 pairs(x,col= (kmfit$cluster),labels=c("Av. Mon. Hrs","Sat. Lvl","Last Eval."))

【问题讨论】:

  • 请提供样本数据集。
  • 库(readr) HR_comma_sep stluc.manta.uqcloud.net/mdatascience/public/datasets/…) HR_left

标签: r ggplot2 cluster-analysis k-means


【解决方案1】:

“每月小时数”的数量与其他两个变量的比例非常不同,因此会扭曲聚类。 “工作时间”的差异主导了其他两个变量的差异。
通过除以平均值、范围或找到 z 分数来归一化每一列。

原代码:

library(readr)
HR_comma_sep <- read_csv("https://stluc.manta.uqcloud.net/mdatascience/public/datasets/HumanResourceAnalytics/HR_comma_sep.csv")
HR_left<-HR_comma_sep[HR_comma_sep$left==1,]

library("ggplot2") 
x_org<-cbind(HR_left$average_montly_hours,
         HR_left$satisfaction_level,
         HR_left$last_evaluation) 

kmfit<-kmeans(x_org, 3, nstart = 25) 
pairs(x_org,col= (kmfit$cluster),labels=c("Av. Mon. Hrs","Sat. Lvl","Last Eval."))

使用缩放值重复计算:

x_scaled<-cbind(scale(HR_left$average_montly_hours),
                scale(HR_left$satisfaction_level),
                scale(HR_left$last_evaluation)) 
kmfit<-kmeans(x_scaled, 3) 
pairs(x_org,col= (kmfit$cluster),labels=c("Av. Mon. Hrs","Sat. Lvl","Last Eval."))

仅使用原始值,基于“每月小时数”差异的聚类,上图显示 2 个聚类(黑色和绿色)合并在一起,并没有明显区别。
缩放值并重复聚类后,现在清楚地显示了 3 个明显不同的聚类(下图)。

【讨论】:

    猜你喜欢
    • 2021-11-18
    • 2021-08-06
    • 2011-10-15
    • 2016-07-28
    • 2015-04-11
    • 2011-08-13
    • 2013-08-08
    • 2013-02-14
    • 2018-01-14
    相关资源
    最近更新 更多