python - 随机森林分类 - 最接近改变类别的点

标签 python machine-learning scikit-learn classification

我目前正在研究有关 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/

相关文章:

machine-learning - 增加 J48 树尺寸 weka

scikit-learn - 加载并使用保存的 Keras model.h5

python - numpy reshape 与负形状值混淆

python - 无法使用 tf.reduce_sum() 优化,但使用 tf.reduce_mean() 成功

machine-learning - 线性误差

android - 将 Python 代码移植到 Android

python - 字符串在 `eval` 语句中被视为变量

python - Django:如何设置和更改它正确反射(reflect) url 的语言?

python - 用整个元组替换嵌套元组中的值

python - django-tables2 中带有 render_* 方法的列不起作用