美文网首页
聚类HW---python实现

聚类HW---python实现

作者: 在做算法的巨巨 | 来源:发表于2018-08-14 22:58 被阅读0次

题目
一、场景
HR想要分析员工的离职原因。(本数据集是造出来的,并非某公司的真实数据。)
二、数据集简介
字段包括:
· Satisfaction Level
· Last evaluation
· Number of projects
· Average monthly hours
· Time spent at the company
· Whether they have had a work accident
· Whether they have had a promotion in the last 5years
· Departments (column sales)
· Salary
· Whether the employee has left
其中left字段是label, 1表示离职了,0表示没有离职。
三、要求
1、通过聚类算法将员工进行分类,并计算每种类别员工的离职率。
2、通过调整聚类模型的参数,尝试找出离职率最高的一类员工。
3、尝试分析离职率最高的这一类员工的特征


这是第一次接触这类业务场景,在聚类算法在这块的应用中,开始时有一些不理解,很容易被监督学习的思维习惯带跑,在完成这次作业的过程中,逐渐对聚类的应用有了新的看法。

数据:

import pandas as pd
data=pd.read_csv('C:\\RAM\\HR_comma_sep.csv')


在这里我们发现sales和salary的数据特点时文本数据,因此我们需要建立虚拟变量dummies variable。


dummiescolumns={
'sales':1,'accounting':2,'hr':3,
'technical':4,'support':5,'management':6,
'IT':7,'product_mng':8,'marketing':9,
'RandD':10,'low':1,'medium':2,'high':3}
for column in ['sales','salary']:
    column1='量化'+column
    data[column1]=data[column].map(dummiescolumns)

建立相关性矩阵

import matplotlib
font={
'family':'SimHei'
}
matplotlib.rc('font',**font)
pd.plotting.scatter_matrix(data,alpha=0.7,figsize=(10,10), diagonal='kde')
data.corr()

从可视化矩阵图和相关系数矩阵中可以看出,我们目前的特征都是相互独立。

数据标准化

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
for column in ['number_project','average_montly_hours','time_spend_company','量化sales','量化salary']:
    column1='标准化'+column
    data[column1]=scaler.fit_transform(data[column])

接下来进行,特征筛选
特征筛选主要是剔除掉离散程度不高的变量。

from sklearn.feature_selection import VarianceThreshold
varianceThreshold=VarianceThreshold(threshold = 0.01)
#这里因为我们已经进行了数据标准化,因此我们假设阈值为0.01
varianceThreshold.fit_transform(newdata)

通过特征筛选,我们发现所有特征满足我们的阈值要求。

因为数据维度太大,因此,降维。我们直接降为二维。

from sklearn.decomposition import PCA
colors={
0:'r',
1:'b'
}
markers={
0:'x',
1:'D'
}
pca_2 = PCA(n_components=2)
data_pca_2 = pca_2.fit_transform(newdata)

从上图中,我们发现,似乎可以分为四类。

接下来,聚类。

from sklearn.cluster import KMeans
kmModel = KMeans(n_clusters=4)
kmModel = kmModel.fit(newdata)
pTarget = kmModel.predict(newdata)
plt.figure()
plt.scatter(data_pca_2[:,0],data_pca_2[:,1],c=pTarget)
dMean=pd.DataFrame(columns=newcolumns+['分类'])
data_gb = newdata.groupby(pTarget)
for g in data_gb.groups:
    rMean=data_gb.get_group(g).mean()
    rMean['分类']=g
    dMean=dMean.append(rMean,ignore_index=True)
    subData=data_gb.get_group(g)
pd.crosstab(pTarget, pTarget)

leftGroup=newdata.groupby(pTarget)['left'].agg({'left':np.sum})

leftGroup['离职率']=leftGroup['left']/newdata['left'].size


接下来看四类人的离职率



可以看出,第一类和第二类在离职问题上,有共性,离职率为0,第三类人离职率为0.233,第四类人离职率为0.00507。这样看来,分为三类似乎就可以了。

离职率最高一类员工的特征:

featurescolumns=['satisfaction_level',
 'last_evaluation',
 'Work_accident',
 'promotion_last_5years',
 '标准化number_project',
 '标准化average_montly_hours',
 '标准化time_spend_company',
 '标准化量化sales',
 '标准化量化salary']
from sklearn.linear_model import LinearRegression
from sklearn.feature_selection import SelectFromModel
IrModel = LinearRegression()
SelectFromModel = SelectFromModel(IrModel)
SelectFromModel.fit_transform(newdata[featurescolumns],newdata['left'])

相关文章

  • 聚类HW---python实现

    题目一、场景HR想要分析员工的离职原因。(本数据集是造出来的,并非某公司的真实数据。)二、数据集简介字段包括:· ...

  • 简单KMEANS聚类实现

    简单KMEANS聚类实现 使用Kmeans进行聚类,分别聚成234类

  • 聚类实现

    1、kmeans k-means算法的思路很简单,一句话描述就是:随机选定K个中心点,将样本归入距离其最近的中心点...

  • 2018-12-19

    文本聚类算法之K-means算法的python实现 一、文本聚类定义 文本聚类主要是依据著名的聚类假设:同类...

  • 100天搞定机器学习|day54 聚类系列:层次聚类原理及案例

    几张GIF理解K-均值聚类原理k均值聚类数学推导与python实现前文说了k均值聚类,他是基于中心的聚类方法,通过...

  • ## Spark实现Canopy聚类算法

    Spark实现Canopy聚类算法 为什么需要Canopy算法 Canopy算法一般是为其他聚类算法的一种聚类方法...

  • Kmeans聚类

    1 聚类与分类的区别2 k-means 聚类基本概念3 算法优缺点4 算法思路5 代码实现 1 聚类与分类的区别 ...

  • 故障诊断——GK-FCM模型 学习

    开门见山模型简介 1. 什么是FCM?他与Kmeans的区别是什么?FCM实现思路? 聚类由硬聚类和软聚类之分,像...

  • 02-15

    今天看的是K-Means聚类问题。通过确定K类的中心点Means,最终实现聚类。用Sklearn.cluster库...

  • 聚类分析的原理和应用(二)

    本文主要讲述聚类分析在SPSS中的实现,和对结果的解读 主要应用K均值聚类、系统聚类、两步聚类法 案例一 K...

网友评论

      本文标题:聚类HW---python实现

      本文链接:https://www.haomeiwen.com/subject/zqzvbftx.html