我目前正在处理一个关于人力资源分析的Kaggle数据集。
我已经清理了数据集,并对一些模型进行了基准测试。表现最佳的是RandomForestClassifier,它能够以较高的准确率(约99%)预测员工是否已离职。
现在,我想找出公司中最有可能离职的员工。我在训练模型上使用了predict_proba
方法,但这只是给出了员工是否已离职的概率,而不是员工将来离职的概率。此外,用于训练的数据集也是同样的数据集。
我不知道如何预测这类信息。例如,在线性回归中,我会寻找最接近估计器的点,但在使用集成方法时,我不知道该怎么做。
如果你想尝试的话,我在下面附上了一段代码:
dataset = pd.read_csv("HR.csv")# Cleanup/Preparation datasconvert_dict = {"high" : 3, "medium": 2, "low": 1}dataset = dataset.replace({"salary": convert_dict})dataset = pd.get_dummies(dataset)X = dataset.drop("left", axis=1)y = dataset["left"]scaler = MinMaxScaler()X = scaler.fit_transform(X)X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# training best model (I pass the benchmark part)model = RandomForestClassifier(bootstrap=False, n_estimators=50)model.fit(X_train, y_train)acc = model.score(X_test, y_test)print(acc)# Evaleval_dataset = dataset[dataset["left"] == 0]X = eval_dataset.drop("left", axis=1)y = eval_dataset["left"]X = scaler.transform(X)y_pred = model.predict_proba(X) # => This is wrong
感谢你的支持,
回答:
你说你的模型准确率约为99%,但这是测试集上的结果吗?如果是的话,太棒了!现在想象一下,你有新的数据进来,包含了你所有的数据字段,你可以对每个观察值使用predict_proba
方法来预测他们是否已经离职。从这个意义上说,你可以将此作为将来是否会离职的简单代理,因为这是你目前最好的选择。
不过,我会给你一个快速的假设来测试。假设员工的所有情况保持不变,但时间继续流逝。你可以更新员工在公司的工作时间,看看他们离职的概率如何随时间变化。当然,这种方法不适合预测几年后的情况(因为希望人们会成长,其他参数也会发生变化),但它可以让你很好地了解一个人在当前状态下能忍受多久,这是基于从训练数据中学到的知识得出的结论。