我目前正在研究有关 Human Resources Analytics 的 Kaggle 数据集。
我已经清理了数据集,对一些模型进行了基准测试。最好的一个是 RandomForestClassifier,它可以准确地预测员工是否离开公司(大约 99%)。
现在,我想找到公司中最有可能离开的员工。我在火车模型上使用了 predict_proba
方法,但这给了我员工离开或不离开的概率。这不是员工离开的概率。此外,该数据集是用于训练的数据集。
我不知道如何预测此类信息。例如,在线性回归中,我会寻找最接近估计器的点,但对于整体,我不知道。
如果您想尝试一下,我在下面附上了一段代码:
dataset = pd.read_csv("HR.csv")
# Cleanup/Preparation datas
convert_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)
# Eval
eval_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
方法来预测它们是否离开。从这个意义上说,您可以使用它作为将离开的简单代理,因为这是您现在拥有的最好的。
我会给你一个快速的假设来测试。假设对于一名员工来说一切都保持不变,但时间却在继续流逝。您可以更新员工在公司工作的时间,并了解他们离职的可能性如何随时间变化。诚然,这不是预测几年后的好方法(希望人们成长并且其他参数发生变化),但它可以让你很好地了解某人会忍受当前现状多久,基于从训练数据中学到的知识。
关于python - 随机森林分类 - 最接近改变类别的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46833744/