首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >K-均值聚类解释

K-均值聚类解释
EN

Stack Overflow用户
提问于 2019-07-16 12:11:09
回答 1查看 404关注 0票数 2

我有三个星系团对图"Av. mon.hrs“,"Sat. Lvl","Last”,并通过下面的代码找到了一个矩阵图。

代码语言:javascript
复制
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."))

上面写着

  • 第一组:这组的特征是工作时间低,平均每月工作时间少,满意度中等,最后一次评价较低。
  • 第二组:从成对的情节来看,这个组的特点是月薪高,满意度低,评价高。
  • 第三组:从成双成对的情节来看,该群体具有月薪高、满意度高、评价高的特点。

但我不明白如何解释这三项发现的配对图。

代码语言:javascript
复制
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."))
EN

回答 1

Stack Overflow用户

发布于 2019-07-16 16:05:55

“每月工作时间”的数量与其他两个变量的比例相差很大,从而使聚类产生偏差。“工作时间”的差异主导了另外两个变量的差异。

通过除以平均值、范围或求z分数来规范每一列.

原始守则:

代码语言:javascript
复制
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."))

重复使用缩放值进行的计算:

代码语言:javascript
复制
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."))

仅使用原始值,根据“月时数”的差异进行聚类,上面的图显示两个簇(黑色和绿色)合并在一起,而且不清楚。

在缩放值和重复聚类之后,现在清晰地显示了3个明显区分的集群(底部图像)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57056974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档