• 【毕业设计】机器学习的员工离职模型研究-python


    目录

    前言

    课题背景和意义

    实现技术思路

    变量分析

    数据导入

    构建机器学习模型

    1. 1 复制数据删除不需要的变量

    1.2 列变量属性分类

    实现效果图样例


    前言


        📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。

    🚀对毕设有任何疑问都可以问学长哦!

    本次分享的课题是

    🎯机器学习的员工离职模型研究-python

    课题背景和意义

    员工流失(employee attrition)是困扰企业的众多关键问题之一。其与员工基础信息、收入、晋升、满意度、绩效和工作与生活平衡等相关的变量等密切相关。

    人力资源部门负责分析导致员工流失的因素,并探索各个变量的影响程度。他们希望能够通过有效的机器学习算法构建模型,用于预测员工是否要辞职。

    员工流失的建模与预测,将有助于减少员工流失,辅助人力资源团队进行关键的干预工作,让管理层明确哪些因素影响了“留人”,反过来促进企业更好地“选人”、“育人”、“用人”。

    实现技术思路

    变量分析

    变量属性包括:性别、年龄、学历、任职过的企业数量、工龄、婚姻状况、在公司工作的时间、职位、职位等级、月收入、工作投入、效绩评分、员工优先认股权、涨薪百分比、上一年培训次数、环境满意度、关系满意度、工作生活平衡、上班离家距离、是否加班、出差情况

    数据导入

    1. # 加载库
    2. import pandas as pd
    3. import seaborn as sns
    4. import numpy as np
    5. import matplotlib.pyplot as plt
    6. from sklearn.preprocessing import LabelEncoder,StandardScaler,MinMaxScaler
    7. from sklearn.cluster import KMeans
    8. import time
    9. from sklearn.model_selection import train_test_split,StratifiedKFold,GridSearchCV
    10. from sklearn.metrics import classification_report , confusion_matrix ,f1_score,accuracy_score
    11. from imblearn.over_sampling import SMOTENC
    12. from sklearn.tree import DecisionTreeClassifier
    13. from sklearn.neighbors import KNeighborsClassifier
    14. from sklearn.ensemble import BaggingClassifier,AdaBoostClassifier , RandomForestClassifier , StackingClassifier,ExtraTreesClassifier,GradientBoostingClassifier
    15. from sklearn.linear_model import LogisticRegression
    16. from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
    17. from sklearn.feature_selection import RFE
    18. import scipy.stats as stats
    19. from sklearn.neural_network import MLPClassifier
    20. from sklearn.svm import SVC
    21. # import squarify
    22. import warnings
    23. warnings.filterwarnings('ignore')

    构建机器学习模型

    一、模型预处理

    Model preparation

    1. 1 复制数据删除不需要的变量

    1. # 1. 1 复制数据删除不需要的变量
    2. MLdata = df.copy()
    3. MLdata.drop(['Over18','EmployeeCount','EmployeeNumber','StandardHours'], axis = 1, inplace = True)

    1.2 列变量属性分类

    1. # 1.2 列变量属性分类
    2. cols_cat = ['Education', 'EnvironmentSatisfaction', 'JobInvolvement', 'JobLevel', 'JobSatisfaction', 'PerformanceRating', 'RelationshipSatisfaction', 'StockOptionLevel', 'WorkLifeBalance']
    3. cols_cat_not_ord = ['BusinessTravel', 'Department', 'EducationField', 'Gender', 'JobRole', 'MaritalStatus', 'OverTime']
    4. cols_num = ['Age', 'DailyRate', 'DistanceFromHome', 'HourlyRate', 'MonthlyIncome', 'MonthlyRate', 'NumCompaniesWorked', 'PercentSalaryHike', 'TotalWorkingYears', 'TrainingTimesLastYear', 'YearsAtCompany', 'YearsInCurrentRole', 'YearsSinceLastPromotion', 'YearsWithCurrManager']
    5. cols_feat = cols_cat + cols_cat_not_ord + cols_num
    6. col_target = ['Attrition'] # Yes/No

    将列变量分为3类:

    • 有序分类变量cols_cat

    • 无序分类变量cols_cat_not_ord

    • 数值型变量cols_num

    样本不平衡问题的处理

    可以看到,对于目标特征员工离职(Attrition),其样本是不平衡的

    1. # 1.10 样本不平衡问题的处理
    2. # 使用SMOTE处理样本不平衡Oversampling 并可视化
    3. fig, axes = plt.subplots(1, 2, figsize=(16, 4))
    4. sns.countplot(ax = axes[0], data = pd.DataFrame(y),x='Attrition', color="c");
    5. cols_cat_idx = [i for (i, col) in enumerate(X.columns) if col in (cols_cat + cols_cat_not_ord)]
    6. oversample = SMOTENC(categorical_features = cols_cat_idx, random_state=SEED)
    7. X_train, y_train = oversample.fit_resample(X_train, y_train)
    8. sns.countplot(ax = axes[1], data = pd.DataFrame(y_train), x = 'Attrition', color="c")
    9. plt.show()

    实现效果图样例

     

    我是海浪学长,创作不易,欢迎点赞、关注、收藏、留言。

    毕设帮助,疑难解答,欢迎打扰!

  • 相关阅读:
    Spark的Shuffle原理及调优
    C++程序入门(helloworld.cpp编写)
    mybatis使用事务
    第4章SpringBoot ⽇志
    数据脱敏sensitive(前端或数据库加密,解密)
    Qt 5.15编译(MinGW)及集成Crypto++ 8.8.0笔记
    Canvas 获取文本宽度使用ctx.measureText
    面向对象及工程环境构建,220729,
    抽卡程序模拟
    截胡高通,三星Exynos 2400率先登场:旗舰芯片定位。
  • 原文地址:https://blog.csdn.net/qq_37340229/article/details/128043357