【问题标题】:Dealing with missing values in the prediction dataset处理预测数据集中的缺失值
【发布时间】:2020-01-06 23:47:14
【问题描述】:

我正在使用带有 python 包的 lightgbm 进行预测。我有一个训练数据集和一个预测数据集。在预测数据集中,我有一些特征的 nan 值。结果,当我有 nan 值时,预测是完全错误的。有没有办法处理预测数据集中的缺失值?

我已尝试使用参数 use_missing 和 zero_as_missing 与所有可能性 ((true, false),...) 但没有成功。我正在使用主版本。


params = {
    'boosting_type': 'gbdt',
    'objective': 'regression',
    'num_leaves': 31,
    'learning_rate': 0.03,
    'max_bin': 255,
    'subsample_for_bin': 50000,
    'min_split_gain': 0.0,
    'min_child_weight': 5,
    'min_child_samples': 10,
    'subsample': 0.5,
    'subsample_freq': 1,
    'colsample_bytree': 0.6,
    'reg_alpha': 0.1,
    'reg_lambda': 1.1,
    'verbose': 0,
    'n_jobs': -1,
    'max_depth': -1,
    'use_missing': False,
    'zero_as_missing': True,
}

gbm = lgb.train(params,
                lgb_train,
               num_boost_round=2000)
y_pred = gbm.predict(predictdata.iloc[:,1:], num_iteration=gbm.best_iteration)

我希望预测给出一致的结果,但当存在缺失值时,实际结果给出的预测过高。

【问题讨论】:

    标签: python python-3.x lightgbm


    【解决方案1】:

    您可以创建缺失的列。您还可以通过对测试数据等进行训练来预测这些缺失值。您可以执行插补技术 esp 模式。

    【讨论】:

    • “您可以创建缺失的列”:当我预测时,缺失值列已经存在。
    • “您还可以通过对测试数据等进行训练来预测那些缺失值。您可以执行插补技术 esp 模式”:这已经是我目前正在做的事情。但现在我试图直接使用lgbm。我的问题是:LightGBM 可以处理这种问题吗?
    【解决方案2】:

    预测给出了太高的手段

    1) “” 您的数据可能不平衡,即如果更高的值更多,那么模型(参数)对最频繁的类的更高类赋予更重要的意义,因此模型从这个频繁的类中学习更多。""

    2)您说预测类在拟合模型之前具有 nan 值,您需要根据您的问题避免 nan 值。

    你能详细说明你的问题吗?

    【讨论】:

    • 感谢您的回答。在我的训练数据集中,我没有缺失值。因此,所有的类都应该具有相同的重要性。在我的预测数据集中,我有缺失值。由此,我有两种可能性:1)我需要通过 interpole 填充 nan 值或预测缺失值。因此在进行预测之前我需要中间步骤 2)算法处理缺失值,我可以直接进行预测。该算法似乎可以处理缺失值,但它给出了错误(太高)的预测
    • 我现在正在使用第一种可能性,但我想知道是否有可能直接使用第二种可能性,结果与第一种可能性相同
    猜你喜欢
    • 1970-01-01
    • 2014-04-27
    • 2019-05-25
    • 2018-11-07
    • 2015-07-03
    • 1970-01-01
    • 2020-02-07
    • 1970-01-01
    • 2018-11-24
    相关资源
    最近更新 更多