【问题标题】:How to use missing parameter of XGBRegressor of scikit-learn如何使用 scikit-learn 的 XGBRegressor 的缺失参数
【发布时间】:2017-06-27 10:30:15
【问题描述】:

我正在处理在某些列中包含缺失值的数据集。我正在尝试将 Scikit-Learn 包装器接口的 XGBRegressor 用于 XGBoost。在那里它提供了一个名为'missing'的参数,您可以在其中输入浮点值,否则它将python的NaN作为默认值。因此,我需要帮助,例如如何使用此参数来填充数据集中列的缺失值。如果有人也能给我提供一个简单的例子,那将会很有帮助。

【问题讨论】:

  • 当您提供一些浮点值作为missing 时,如果该特定值存在于您的数据中,则将其视为缺失值。例如,如果您指定缺失 = 0.1,那么无论 0.1 出现在哪里,都将被视为缺失值。 Look here 了解有关缺失值处理的更多详细信息
  • 那么有没有办法检索已被 xgboost 修改的修改数据集
  • 我认为它不会修改数据集。只是在遇到缺失值时决定拆分的方向进行拟合

标签: python scikit-learn xgboost


【解决方案1】:

缺失值参数可以作为您为“缺失”参数提供的任何值,它将其视为缺失值。例如,如果您提供 0.5 作为缺失值,那么无论在您的数据中找到 0.5 的任何位置,它都会将其视为缺失值。默认为 NaN。所以 XGBoost 所做的是基于它定义路径之一作为默认路径的数据。例如,基于一个参数说它可以向左或向右两个方向,因此其中一个将根据数据设为默认值。因此,每当缺失值之一作为参数的输入时,假设您将 0.5 定义为缺失,那么每当数据中出现 0.5 时,它就会采用默认路径。最初我认为它会估算缺失值,但事实并非如此。它只是将其中一个路径定义为默认路径,并且每当出现任何缺失值时,它都会采用该默认路径。这是在论文XGBoost: A Scalable Tree Boosting System中定义的

【讨论】:

    【解决方案2】:

    我的理解是你搞混了。 缺失参数仅替换缺失(又名 NaN)的某个值(或值列表) - 默认为“np.nan”

    如果您想用一些不同的值替换实际的缺失值,可以说“X”,您必须在应用模型之前对您的数据执行此操作。

    如果你有一个数据框“df”,你可以:

    df.fillna(X)
    

    如果你有一个 np.array “数组”,你可以:

    np.nan_to_num(array)
    

    但上述内容会将 np.nan 替换为零。

    希望对你有帮助,

    【讨论】:

    • 我想知道它的实际作用。它是简单地用一些默认值(如零)替换缺失值,还是尝试预测应该用什么值代替缺失值。
    • 我对它的理解是,它只是简单地替换了值。
    猜你喜欢
    • 2016-01-11
    • 1970-01-01
    • 2017-04-03
    • 2020-10-06
    • 2012-07-11
    • 2015-07-11
    • 2016-06-07
    • 2014-10-04
    • 1970-01-01
    相关资源
    最近更新 更多