【发布时间】:2021-03-05 09:00:31
【问题描述】:
我正在从事一个众所周知且简单的 Kaggle 项目,但当我看到其他参赛者做出的一些预测时,我有些怀疑,他们达到了 100%。
有两个csv文件,一个叫'train.csv'和'test.csv';第一个是训练,第二个是预测二元特征。要预测的二进制特征称为“Survived”,它不存在于测试 csv 文件中。
为了预处理数据,我将它们加载为 pandas 数据帧。测试数据框没有“幸存”功能,因此我创建了一个具有相同名称和常量值 -1 的新列,以区分训练数据框中相应列的 0 和 1。然后我将它们逐行合并。
我检查了重复的行,但没有。我检查了缺失值并得到了
Feature Missing_num Missing_percent
Cabin 1014 77.463713
Age 263 20.091673
Embarked 2 0.152788
Fare 1 0.076394
我继续删除所有缺失值大于 30% 的特征。缺失百分比小于 30% 的特征是我使用库 DataWig 估算的,该库使用 LSTM 算法。
对于分类特征,我使用相应的标签编码器,将它们转换为数字。
一旦样本是干净的,然后我通过选择训练数据点来分离训练和测试,例如 'Survived' !=-1。
为了最好地预测测试子样本中的标签,我决定优化随机森林模型,通过使用不同的方法(如Minimize、Differential Evolution)最小化所有超参数的 MSE/AUC 比率和Basinhopping,来自scipy.optimize。
我用训练子样本训练模型;我预测训练子样本的标签,然后计算 MSE 和 AUC,以及比率 MSE/AUC。
当我使用Minimize 时,在给定的初始条件下,它总是完成给出SUCCESS 作为响应的过程,但它总是给出初始点。
当我使用Differential Evolution 和Basinhopping 时,我得到的结果与Minimize 的初始点不同,但是,我总是得到 0.5 的 AUC,这表示获得的模型给出了随机预测。
Here is the link to the project.
我想知道我做错了什么以及为什么模型给出随机预测?
【问题讨论】:
标签: python machine-learning optimization random-forest