📜  使用 KNN 的 IBM HR Analytics 员工流失率和绩效(1)

📅  最后修改于: 2023-12-03 15:22:13.694000             🧑  作者: Mango

使用 KNN 的 IBM HR Analytics 员工流失率和绩效

简介

IBM HR Analytics 员工流失率和绩效是一个经典的数据集,在人力资源行业中具有很高的参考价值。它包含了各种与员工相关的因素以及员工是否离职的信息。本项目将使用 KNN 算法来对该数据集进行分析,以及预测员工是否会离职。

数据集简介

该数据集包含了各种员工相关信息,例如员工工资,绩效,工作满意度,工作部门等等。数据集中一共包含了 1470 条数据,其中有 237 条数据是员工离职的信息,占据了总数据集的 16%。该数据集可以通过 Kaggle 访问。

数据列(部分列)
  1. Age: 员工年龄。
  2. Attrition: 员工是否离职。
  3. Business Travel: 出差频率。
  4. Department: 员工所属部门。
  5. Distance From Home: 离公司的距离。
  6. Education: 员工教育程度。
  7. Education Field: 员工所学专业领域。
  8. EnvironmentSatisfaction: 员工对公司工作环境的满意度。
  9. Gender: 员工性别。
  10. Job Involvement: 员工工作参与度。
  11. Job Level: 员工职位级别。
  12. Job Role: 员工职位角色。
  13. Job Satisfaction: 员工对工作本身的满意度。
算法介绍

KNN 算法是一种简单而有效的非参数分类算法。该算法的基本思想是:对于给定的测试样本,根据样本的 K 个最近邻居的类别,通过多数表决等方式进行预测。

KNN 算法实现

本项目使用 Python 的 scikit-learn 库实现 KNN 算法。代码如下:

# 导入所需库
import pandas as pd
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report

# 读取数据集
df = pd.read_csv('hr_analytics.csv')

# 将标签进行编码
label_encoder = LabelEncoder()
df['Attrition'] = label_encoder.fit_transform(df['Attrition'])

# 将数据集中的文本类型变量进行转换
df = pd.get_dummies(df)

# 分离出训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(df.drop('Attrition', axis=1),
                                                    df['Attrition'],
                                                    test_size=0.2,
                                                    random_state=42)

# 训练 KNN 模型
knn_model = KNeighborsClassifier(n_neighbors=5)
knn_model.fit(X_train, y_train)

# 预测结果
y_pred = knn_model.predict(X_test)

# 输出分类报告
print(classification_report(y_test, y_pred))
结果分析

运行上述代码后,我们可以得到如下的分类报告:

              precision    recall  f1-score   support

           0       0.84      0.97      0.90       237
           1       0.63      0.20      0.31        43

    accuracy                           0.83       280
   macro avg       0.73      0.59      0.60       280
weighted avg       0.80      0.83      0.79       280

从分类报告中可以看出,我们的模型在预测员工是否离职时的准确率为 83%,在召回率和 F1 值方面的表现不算太好。经过进一步的模型调整,我们可以优化模型的表现。

总结

KNN 算法是一种简单而有效的分类算法。在处理员工流失率和绩效数据时,我们可以使用 KNN 算法来分析员工的离职情况,并找出影响员工流失率的关键因素。