基于机器学习预测员工流失的情况

简介: 基于机器学习预测员工流失的情况

背景

员工流失对于任何组织都是一个严重的问题,它可能导致生产力下降和成本增加。通过分析员工流失的数据,并使用机器学习模型来预测员工是否会流失,我们可以采取预防性措施,尽量减少员工的流失。

数据探索性分析(EDA)

首先,让我们加载数据并进行一些基本的探索性分析

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 加载数据
data = pd.read_csv('employee.csv')

# 探索性数据分析
print(data.info())
print(data.describe())

# 可视化员工流失情况
plt.figure(figsize=(8, 5))
sns.countplot(x='Attrition', data=data)
plt.title('Attrition Distribution')
plt.show()

# 可视化不同部门的流失情况
plt.figure(figsize=(10, 6))
sns.countplot(x='Department', hue='Attrition', data=data)
plt.title('Attrition in Different Departments')
plt.show()

# 可视化年龄与流失的关系
plt.figure(figsize=(10, 6))
sns.boxplot(x='Attrition', y='Age', data=data)
plt.title('Age vs Attrition')
plt.show()

数据预处理

接下来,我们对数据进行预处理,包括去除无关的特征、对分类变量进行编码以及特征缩放

from sklearn.preprocessing import StandardScaler

# 去除无关特征并进行编码
data.drop(['EmployeeCount', 'EmployeeNumber', 'Over18', 'StandardHours'], axis=1, inplace=True)
data['Attrition'] = data['Attrition'].replace({'No': 0, 'Yes': 1})
data_encoded = pd.get_dummies(data, drop_first=True)

# 特征缩放
features_to_scale = ['Age', 'DailyRate', 'DistanceFromHome', 'HourlyRate', 'MonthlyIncome', 'MonthlyRate',
                     'NumCompaniesWorked', 'PercentSalaryHike', 'TotalWorkingYears', 'YearsAtCompany',
                     'YearsInCurrentRole', 'YearsSinceLastPromotion', 'YearsWithCurrManager']
scaler = StandardScaler()
data_scaled = scaler.fit_transform(data_encoded[features_to_scale])

模型构建与评估

现在,我们将数据集拆分为训练集和测试集,并构建逻辑回归模型和随机森林模型来预测员工的流失情况。

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, classification_report

# 划分数据集
X = data_encoded.drop('Attrition', axis=1)
y = data_encoded['Attrition']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 构建逻辑回归模型
logistic_model = LogisticRegression()
logistic_model.fit(X_train, y_train)
y_pred_logistic = logistic_model.predict(X_test)
accuracy_logistic = accuracy_score(y_test, y_pred_logistic)

# 构建随机森林模型
rf_model = RandomForestClassifier(n_estimators=100, random_state=42)
rf_model.fit(X_train, y_train)
y_pred_rf = rf_model.predict(X_test)
accuracy_rf = accuracy_score(y_test, y_pred_rf)

# 输出结果
print("Logistic Regression Accuracy:", accuracy_logistic)
print("Logistic Regression Classification Report:")
print(classification_report(y_test, y_pred_logistic))

print("\nRandom Forest Accuracy:", accuracy_rf)
print("Random Forest Classification Report:")
print(classification_report(y_test, y_pred_rf))

结论

通过逻辑回归和随机森林模型,我们成功地预测了员工的流失情况。通过分析模型的准确率和分类报告,我们可以看到随机森林模型相对于逻辑回归模型有更好的预测效果,因为它能够更好地处理复杂的数据关系。

相关文章
|
7月前
|
机器学习/深度学习 数据采集 算法
【阿旭机器学习实战】【35】员工离职率预测---决策树与随机森林预测
【阿旭机器学习实战】【35】员工离职率预测---决策树与随机森林预测
|
8月前
|
机器学习/深度学习 数据采集 算法
数据分享|R语言机器学习预测案例合集:众筹平台、机票折扣、糖尿病患者、员工满意度
数据分享|R语言机器学习预测案例合集:众筹平台、机票折扣、糖尿病患者、员工满意度
|
8月前
|
机器学习/深度学习 PyTorch 算法框架/工具
Python中用PyTorch机器学习神经网络分类预测银行客户流失模型
Python中用PyTorch机器学习神经网络分类预测银行客户流失模型
|
8月前
|
机器学习/深度学习 数据采集 自然语言处理
编写员工聊天监控软件的机器学习模块:Scikit-learn在行为分析中的应用
随着企业对员工行为监控的需求增加,开发一种能够自动分析员工聊天内容并检测异常行为的软件变得愈发重要。本文介绍了如何使用机器学习模块Scikit-learn来构建这样一个模块,并将其嵌入到员工聊天监控软件中。
247 3
|
8月前
|
机器学习/深度学习 存储 数据采集
控制员工上网软件的机器学习应用
在现代企业管理中,对员工上网行为进行有效监控成为了一项必不可少的任务。为了实现更加智能、精准的控制,机器学习技术应运而生。本文将介绍如何利用机器学习应用来控制员工上网软件,并通过代码示例展示其实际操作。
230 0
|
机器学习/深度学习 监控 TensorFlow
利用TensorFlow实现机器学习代码以用防止员工泄密软件检测员工泄密行为
随着信息安全的重要性日益增加,保护敏感数据免受员工泄密的风险成为组织的首要任务之一。在本文中,我们将讨论如何使用TensorFlow,一种强大的开源机器学习框架,来实现防止员工泄密软件。我们将演示如何编写代码来监控员工的行为,检测潜在的泄密行为,并在必要时采取自动化措施。这一切将有助于加强数据安全,防止敏感信息泄露。
213 2
|
8月前
|
机器学习/深度学习 网络安全 Python
【Python机器学习】决策树、逻辑回归、神经网络等模型对电信用户流失分类实战(附源码和数据集)
【Python机器学习】决策树、逻辑回归、神经网络等模型对电信用户流失分类实战(附源码和数据集)
117 0
|
机器学习/深度学习
【阿旭机器学习实战】【24】信用卡用户流失预测实战
【阿旭机器学习实战】【24】信用卡用户流失预测实战
【阿旭机器学习实战】【24】信用卡用户流失预测实战
|
2月前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
117 4
|
16天前
|
算法
PAI下面的gbdt、xgboost、ps-smart 算法如何优化?
设置gbdt 、xgboost等算法的样本和特征的采样率
40 2