偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

用R語(yǔ)言分析與預(yù)測(cè)員工離職

大數(shù)據(jù) 數(shù)據(jù)分析
在實(shí)驗(yàn)室搬磚之后,繼續(xù)我們的kaggle數(shù)據(jù)分析之旅,這次數(shù)據(jù)也是答主在kaggle上選擇的比較火的一份關(guān)于人力資源的數(shù)據(jù)集,關(guān)注點(diǎn)在于員工離職的分析和預(yù)測(cè),依然還是從數(shù)據(jù)讀取,數(shù)據(jù)預(yù)處理,EDA和機(jī)器學(xué)習(xí)建模這幾個(gè)部分開(kāi)始進(jìn)行,最后使用集成學(xué)習(xí)中比較火的random forest算法來(lái)預(yù)測(cè)離職情況。

在實(shí)驗(yàn)室搬磚之后,繼續(xù)我們的kaggle數(shù)據(jù)分析之旅,這次數(shù)據(jù)也是答主在kaggle上選擇的比較火的一份關(guān)于人力資源的數(shù)據(jù)集,關(guān)注點(diǎn)在于員工離職的分析和預(yù)測(cè),依然還是從數(shù)據(jù)讀取,數(shù)據(jù)預(yù)處理,EDA和機(jī)器學(xué)習(xí)建模這幾個(gè)部分開(kāi)始進(jìn)行,***使用集成學(xué)習(xí)中比較火的random forest算法來(lái)預(yù)測(cè)離職情況。

數(shù)據(jù)讀取

  1. setwd("E:/kaggle/human resource"
  2. library(data.table
  3. library(plotly) 
  4. library(corrplot) 
  5. library(randomForest) 
  6. library(pROC) 
  7. library(tidyverse) 
  8. library(caret) 
  9. hr<-as.tibble(fread("HR_comma_sep.csv")) 
  10. glimpse(hr) 
  11. sapply(hr,function(x){sum(is.na(x))}) 
  12. ———————————————————————————————————————————————————————————————————————————————————— 
  13. Observations: 14,999 
  14. Variables: 10 
  15. $ satisfaction_level    <dbl> 0.38, 0.80, 0.11, 0.72, 0.37, 0.41, 0.10, 0.92, 0.89, 0.42, 0.45, 0.11, 0.84, 0.41, 0.36, 0.38, 0.45, 0.78, 0.45, 0.76, 0.11, 0.3... 
  16. $ last_evaluation       <dbl> 0.53, 0.86, 0.88, 0.87, 0.52, 0.50, 0.77, 0.85, 1.00, 0.53, 0.54, 0.81, 0.92, 0.55, 0.56, 0.54, 0.47, 0.99, 0.51, 0.89, 0.83, 0.5... 
  17. $ number_project        <int> 2, 5, 7, 5, 2, 2, 6, 5, 5, 2, 2, 6, 4, 2, 2, 2, 2, 4, 2, 5, 6, 2, 6, 2, 2, 5, 4, 2, 2, 2, 6, 2, 2, 2, 4, 6, 2, 2, 6, 2, 5, 2, 2, ... 
  18. $ average_montly_hours  <int> 157, 262, 272, 223, 159, 153, 247, 259, 224, 142, 135, 305, 234, 148, 137, 143, 160, 255, 160, 262, 282, 147, 304, 139, 158, 242,... 
  19. $ time_spend_company    <int> 3, 6, 4, 5, 3, 3, 4, 5, 5, 3, 3, 4, 5, 3, 3, 3, 3, 6, 3, 5, 4, 3, 4, 3, 3, 5, 5, 3, 3, 3, 4, 3, 3, 3, 6, 4, 3, 3, 4, 3, 5, 3, 3, ... 
  20. $ Work_accident         <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 
  21. left                  <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ... 
  22. $ promotion_last_5years <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 
  23. $ sales                 <chr> "sales""sales""sales""sales""sales""sales""sales""sales""sales""sales""sales""sales""sales""sales", "sa... 
  24. $ salary                <chr> "low""medium""medium""low""low""low""low""low""low""low""low""low""low""low""low""low""low", "low... 
  25.  
  26.  satisfaction_level       last_evaluation        number_project  average_montly_hours    time_spend_company         Work_accident                  left  
  27.                     0                     0                     0                     0                     0                     0                     0  
  28. promotion_last_5years                 sales                salary  
  29.                     0                     0                     0  

數(shù)據(jù)集情況如下,一共10維數(shù)據(jù),14999個(gè)觀測(cè)值,變量的代表名稱分別是

satisfaction_level--滿意度,last_evaluation--***一次評(píng)估,number_project--參與項(xiàng)目數(shù)量,average_montly_hours--每月平均工作時(shí)間,time_spend_company--公司停留時(shí)間,Work_accident--工作事故次數(shù),left--是否離職,promotion_last_5years--過(guò)去五年升值狀況,sales--工種,salary--工資。

而且簡(jiǎn)單的觀測(cè)了一下,沒(méi)有發(fā)現(xiàn)缺失值,那么我就可以直接進(jìn)入數(shù)據(jù)分析階段了。

數(shù)據(jù)預(yù)處理

根據(jù)每一個(gè)特征的數(shù)值情況,我們可以將不少特征因子化,方便后期做不同類別的差異分析。

  1. hr$sales<-as.factor(hr$sales) 
  2. hr$salary<-as.factor(hr$salary) 
  3. hr$left<-as.factor(hr$left
  4. hr$Work_accident<-as.factor(hr$Work_accident) 
  5. hr$left<-recode(hr$left,'1'="yes",'0'="no"
  6. hr$promotion_last_5years<-as.factor(hr$promotion_last_5years) 

看的出大部分?jǐn)?shù)據(jù)都是數(shù)值型的,我們使用相關(guān)性來(lái)衡量不同變量之間的相關(guān)性高低:

  1. cor.hr<-hr %>% select(-sales,-salary) 
  2. cor.hr$Work_accident<-as.numeric(as.character(cor.hr$Work_accident)) 
  3. cor.hr$promotion_last_5years<-as.numeric(as.character(cor.hr$promotion_last_5years)) 
  4. cor.hr$left<-as.numeric(as.character(cor.hr$left)) 
  5. corrplot(corr = cor(cor.hr),type = "lower",method = "square",title="變量相關(guān)性",order="AOE"

 

用R語(yǔ)言分析與預(yù)測(cè)員工離職

直觀的來(lái)看,是否離職和滿意度高低就有很高的關(guān)聯(lián)性啊。

EDA

  1. ggplot(group_by(hr,sales),aes(x=sales,fill=sales))+geom_bar(width = 1)+coord_polar(theta = "x")+ggtitle("不同職業(yè)的人數(shù)"
  2. ggplot(hr,aes(x=sales,y=satisfaction_level,fill=sales))+geom_boxplot()+ggtitle("不同職業(yè)的滿意度")+stat_summary(fun.y = mean,size=3,color='white',geom = "point")+ 
  3.   theme(legend.position = "none"
  4. ggplot(hr,aes(x=sales,y=satisfaction_level,fill=left))+geom_boxplot()+ggtitle("不同職業(yè)的滿意度"
  5. ggplot(hr,aes(x=sales,y=average_montly_hours,fill=left))+geom_boxplot()+ggtitle("不同職業(yè)的工作時(shí)長(zhǎng)"
  6. ggplot(hr,aes(x=sales,y=number_project,fill=left))+geom_boxplot()+ggtitle("不同職業(yè)的項(xiàng)目情況"

 

用R語(yǔ)言分析與預(yù)測(cè)員工離職

首先觀察不同崗位的工作人數(shù)。搞銷售的人數(shù)真的是不少,難道有不少我大生科的同學(xué)嗎??(哈哈哈哈哈哈哈,開(kāi)個(gè)玩笑而已,不過(guò)說(shuō)實(shí)話做生物真的很累啊)。銷售,后期支持,和技術(shù)崗人數(shù)占據(jù)人數(shù)排行榜前三。

用R語(yǔ)言分析與預(yù)測(cè)員工離職

不同的職業(yè)滿意度的分布大體相當(dāng),不過(guò)accounting的小伙伴們似乎打分都不高哦,其他的幾個(gè)工種均值和中位數(shù)都沒(méi)有明顯差別,接下來(lái)我們看看不同職業(yè)是否離職的情況和打分的高低情況:

用R語(yǔ)言分析與預(yù)測(cè)員工離職

和想象中結(jié)果幾乎沒(méi)有區(qū)別,離職和不離職的打分區(qū)分度很高,和職業(yè)幾乎沒(méi)有關(guān)系。

用R語(yǔ)言分析與預(yù)測(cè)員工離職

那么不同職業(yè)的平均工作時(shí)長(zhǎng)呢,看圖而言,沒(méi)有離職的人群工作時(shí)間都很穩(wěn)定,但是離職人群的工作時(shí)間呈現(xiàn)兩極分化的趨勢(shì),看來(lái)太忙和太閑都不是很好,這對(duì)hr的考驗(yàn)還是很大的。

后面我們來(lái)一次關(guān)注一下不同特征和離職的關(guān)系問(wèn)題:

  1. ggplot(hr,aes(x=satisfaction_level,color=left))+geom_line(stat = "density")+ggtitle("滿意度和離職的關(guān)系"
  2. ggplot(hr,aes(x=salary,fill=left))+geom_histogram(stat="count")+ggtitle("工資和離職的關(guān)系"
  3. ggplot(hr,aes(x=promotion_last_5years,fill=left))+geom_histogram(stat="count")+ggtitle("近5年升值和離職的關(guān)系"
  4. ggplot(hr,aes(x=last_evaluation,color=left))+geom_point(stat = "count")+ggtitle("***一次評(píng)價(jià)和離職的關(guān)系"
  5. hr %>% group_by(sales) %>% ggplot(aes(x=sales,fill=Work_accident))+geom_bar()+coord_flip()+ 
  6.   theme(axis.text.x = element_blank(),axis.title.x = element_blank(),axis.title.y = element_blank())+scale_fill_discrete(labels=c("no accident","at least once")) 

 

用R語(yǔ)言分析與預(yù)測(cè)員工離職

沒(méi)有離職的人群打分已知非常穩(wěn)定,而離職人群的打分就有點(diǎn)難以估摸了

用R語(yǔ)言分析與預(yù)測(cè)員工離職

還是那句話,“有錢好辦事啊”

用R語(yǔ)言分析與預(yù)測(cè)員工離職

你不給寶寶升職,寶寶就生氣離職

用R語(yǔ)言分析與預(yù)測(cè)員工離職

和前面的面積圖差不多,hr也要警惕那些***一次打分很高的,雖然大部分是不準(zhǔn)備離職的,但是有些為了給老東家面子還是會(huì)來(lái)點(diǎn)“善意的謊言”的。

用R語(yǔ)言分析與預(yù)測(cè)員工離職

不出錯(cuò)是不可能的,出錯(cuò)人數(shù)多少基本和總?cè)藬?shù)成正比,所以這個(gè)對(duì)于離職來(lái)說(shuō)不是問(wèn)題。

模型構(gòu)建和評(píng)估

  1. index<-sample(2,nrow(hr),replace = T,prob = c(0.7,0.3)) 
  2. train<-hr[index==1,];test<-hr[index==2,] 
  3. model<-randomForest(left~.,data = train) 
  4. predict.hr<-predict(model,test) 
  5. confusionMatrix(test$left,predict.hr) 
  6.  
  7. prob.hr<-predict(model,test,type="prob"
  8. roc.hr<-roc(test$left,prob.hr[,2],levels=levels(test$left)) 
  9. plot(roc.hr,type="S",col="red",main = paste("AUC=",roc.hr$auc,sep = "")) 

根據(jù)前面的特征分析,本次答主并沒(méi)有覺(jué)得有很好的特征來(lái)提取,就直接扔進(jìn)算法里面計(jì)算去了,計(jì)算出來(lái)的混淆矩陣的情況效果還是杠杠的:

  1. Confusion Matrix and Statistics 
  2.  
  3.           Reference 
  4. Prediction   no  yes 
  5.        no  3429    5 
  6.        yes   28 1010 
  7.                                            
  8.                Accuracy : 0.9926           
  9.                  95% CI : (0.9897, 0.9949) 
  10.     No Information Rate : 0.773            
  11.     P-Value [Acc > NIR] : < 2.2e-16        
  12.                                            
  13.                   Kappa : 0.9791           
  14.  Mcnemar's Test P-Value : 0.0001283        
  15.                                            
  16.             Sensitivity : 0.9919           
  17.             Specificity : 0.9951           
  18.          Pos Pred Value : 0.9985           
  19.          Neg Pred Value : 0.9730           
  20.              Prevalence : 0.7730           
  21.          Detection Rate : 0.7668           
  22.    Detection Prevalence : 0.7679           
  23.       Balanced Accuracy : 0.9935           
  24.                                            
  25.        'Positive' Class : no    

acc=0.9926,recall=0.9951,precision=0.9730,基本都是逆天的數(shù)據(jù)了,看來(lái)kaggle的數(shù)據(jù)集已經(jīng)清洗的很棒了,rf算法也是一如既往地給力。***貼出ROC曲線的圖

用R語(yǔ)言分析與預(yù)測(cè)員工離職

寫在***

本次分析其實(shí)并沒(méi)有很多的技巧可言,答主的ggplot2水平也遇到了瓶頸期,后期需要不斷加強(qiáng),而且只會(huì)調(diào)包不懂算法后面的原理更是不可以的,所以最近在慢慢把概率論,線性代數(shù),還是統(tǒng)計(jì)學(xué)撿起來(lái),當(dāng)然R語(yǔ)言的數(shù)據(jù)分析實(shí)踐還是不會(huì)停下來(lái)的,答主英語(yǔ)還不錯(cuò),可以和實(shí)驗(yàn)室的老外教授“忽悠”幾句,也算是有了不少的進(jìn)步。

道阻且長(zhǎng),大家共勉~~~

責(zé)任編輯:未麗燕 來(lái)源: 經(jīng)管人學(xué)數(shù)據(jù)分析
相關(guān)推薦

2009-05-21 16:08:56

谷歌演算程序員工離職

2009-03-09 09:02:37

雅虎微軟離職計(jì)劃

2014-08-19 09:56:37

程序員

2010-08-23 10:54:26

2015-02-27 13:51:32

數(shù)據(jù)安全

2013-04-10 10:31:21

R語(yǔ)言

2020-05-15 15:09:51

R語(yǔ)言數(shù)據(jù)分析

2009-06-10 10:33:33

華為離職員工定律

2015-06-16 10:58:59

蘋果創(chuàng)業(yè)員工

2023-07-10 16:01:56

2009-05-15 16:55:28

自費(fèi)離職裁員

2015-10-30 11:52:09

數(shù)據(jù)挖掘術(shù)語(yǔ)

2010-10-19 10:39:45

鮑爾默軟件架構(gòu)師

2010-01-27 09:33:11

松下員工

2010-06-25 11:09:27

隱性裁員

2009-02-24 11:37:30

遣散費(fèi)補(bǔ)償金裁員

2013-05-22 08:55:14

R語(yǔ)言

2021-04-29 15:49:24

比特幣加密貨幣貨幣

2012-07-10 13:48:15

2018-01-31 14:59:09

美團(tuán)員工離職
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)