📅  最后修改于: 2023-12-03 15:22:13.694000             🧑  作者: Mango
IBM HR Analytics 员工流失率和绩效是一个经典的数据集,在人力资源行业中具有很高的参考价值。它包含了各种与员工相关的因素以及员工是否离职的信息。本项目将使用 KNN 算法来对该数据集进行分析,以及预测员工是否会离职。
该数据集包含了各种员工相关信息,例如员工工资,绩效,工作满意度,工作部门等等。数据集中一共包含了 1470 条数据,其中有 237 条数据是员工离职的信息,占据了总数据集的 16%。该数据集可以通过 Kaggle 访问。
KNN 算法是一种简单而有效的非参数分类算法。该算法的基本思想是:对于给定的测试样本,根据样本的 K 个最近邻居的类别,通过多数表决等方式进行预测。
本项目使用 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 算法来分析员工的离职情况,并找出影响员工流失率的关键因素。