【问题标题】:Model optimization using Minimize, Differential Evolution and Basinhopping使用最小化、差分演化和流域跳跃进行模型优化
【发布时间】: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。

为了最好地预测测试子样本中的标签,我决定优化随机森林模型,通过使用不同的方法(如MinimizeDifferential Evolution)最小化所有超参数的 MSE/AUC 比率和Basinhopping,来自scipy.optimize

我用训练子样本训练模型;我预测训练子样本的标签,然后计算 MSE 和 AUC,以及比率 MSE/AUC。

当我使用Minimize 时,在给定的初始条件下,它总是完成给出SUCCESS 作为响应的过程,但它总是给出初始点。

当我使用Differential EvolutionBasinhopping 时,我得到的结果与Minimize 的初始点不同,但是,我总是得到 0.5 的 AUC,这表示获得的模型给出了随机预测。

Here is the link to the project.

我想知道我做错了什么以及为什么模型给出随机预测?

【问题讨论】:

    标签: python machine-learning optimization random-forest


    【解决方案1】:

    我认为您应该查看Y_pred 并查看预测值是什么样的,从而为您提供 AUC 0.50。我看到您使用的是 predict 而不是 predict_proba,因此您的模型在 MSE 和 AUC 上的表现会很差。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-15
      • 1970-01-01
      • 1970-01-01
      • 2014-09-05
      • 1970-01-01
      • 1970-01-01
      • 2013-04-20
      • 1970-01-01
      相关资源
      最近更新 更多