我正在开发一个项目,旨在使用一个包含离职人员历史的数据库,并根据离职人员的个人资料计算在职员工离职的风险。
离职人员数据库
df_hist
包含自愿辞职人员的信息,如工作、种族、性别、薪水等。其结构类似于以下示例:
Date Action Name Salary Race Position
'05/10/2023' 'Self-resignation' 'Ana' '10,000' 'Black' 'IT'
'05/12/2024' 'Self-resignation' 'John' '9,000' 'White' 'Blank'
'03/01/2023' 'Self-resignation' 'Niel' '11,000' 'Blank' 'Data Scients'
'03/01/2023' 'Self-resignation' 'Isa' '10,000' 'White' 'IT'
数据库全部采用
object
格式,并且可能包含一些指定为“空白”的 NaN
值。
此外,我还有一个数据库
df_active
,其中包含在职员工的历史记录。它包括参考日期和活跃个体的特征。该数据库可能有同一个人的多个条目,因为他们可能已经改变了职位,接受了加薪或其他变化,所有这些都记录了各自的日期(并且他们的风险可能会随着修改而改变)。它的结构类似于下面的示例:
Date Action Name Salary Race Position
'05/10/2023' 'Self-resignation' 'Harry' '8,000' 'White' 'Data Scients'
'10/10/2023' 'Self-resignation' 'Harry' '10,000' 'Black' 'Data Scients' # Salary change
'05/13/2024' 'Self-resignation' 'Emma' '7,000' 'White' 'Blank'
'08/01/2024' 'Self-resignation' 'Diana' '13,000' 'Blank' 'Data Scients'
'10/01/2024' 'Self-resignation' 'Diana' '13,000' 'Blank' 'IT' # Position change
我的目标是计算在职员工的流失风险。我想到了两种方法:
根据已辞职员工的数据库创建 100 个档案,将其从最高风险(100%)到最低风险(0%)排序,然后确定与每个在职员工最接近的档案。在职员工的风险评分将基于创建的 100 个档案的排名。
生成代表员工历史中最突出特征的档案,并计算此高风险档案与在职员工档案之间的相似度。
我已经开始构建代码,但我不确定使用哪个变量作为目标以及解决此问题的最佳方法是什么。
from sklearn.tree import RandomForestClassifier
from sklearn.preprocessing import LabelEncoder
columns = ['Action', 'Name', 'Salary', 'Race', 'Position']
# Convert: categorical to numeric
le = LabelEncoder()
for column in columns:
df_hist[coluna] = le.fit_transform(df_hist[coluna])
# Train test split
X = df_hist.drop('Action', axis=1)
y = df_hist['Action']
我如何继续第一步来追踪流失风险最高的人员的资料?
也许这不是您想听到的答案,但我唯一的建议是不要这样做。通过确定谁最有可能离开,您很可能违反了一些道德(并且取决于您居住的地方的法律)界限,特别是在考虑种族和性别等信息时。
我认为你的结论会对员工产生一些影响,在这种情况下,你会根据他们的种族和其他敏感特征影响他们在公司的未来。
如果您位于欧盟,请查看人工智能法案中制定的规则。我不是律师,但我认为您的案件属于“高风险”类别,该类别受到非常严格的规则。