【问题标题】:XGBoost Algorithm: Feature importance change after renaming columnsXGBoost 算法:重命名列后的特征重要性变化
【发布时间】:2019-12-19 17:47:21
【问题描述】:

我对我的数据运行了 XGBoost 算法,发现有 15 个特征很重要。我重命名了我的数据框中的列,然后再次运行相同的 XGBoost 算法并注意到我的重要特征发生了变化。矩阵中的顺序略有混乱,并且存在 2-3 个新变量。基本相同,但考虑到我只更改了 col 名称,我想知道是什么导致了功能重要性的这种变化。我使用树形来查找特征重要性,下面是我如何重命名列。

colnames = pd.read_csv("kbmg_colnames.csv")
d = dict(zip(colnames['Actual'], colnames['To be changed']))
Data_test = Data_test.rename(columns=d)

【问题讨论】:

  • 你设置的是固定的random_state吗?
  • 是的,我正在设置一个随机状态。我正在通过完全相同的代码运行 2 个数据帧(在列更改之后和之前)。

标签: python machine-learning data-science


【解决方案1】:

几乎每个 ML 算法中都有一个 random_state。

random_state : int, RandomState instance or None, optional (default=None)

    If int, random_state is the seed used by the random number generator; If RandomState instance, random_state is the random number generator; If None, the random number generator is the RandomState instance used by np.random.

要在每次运行中获得相同的结果,您必须将其设置为某个数字:random_state=42。强烈建议对每个 ML 任务执行此操作。

Random state (Pseudo-random number) in Scikit learn

【讨论】:

  • 我已将随机状态设置为 42。
  • 我运行的代码完全相同,我将随机状态设置为 42。我所做的唯一更改是重命名列。这真的让我很困惑!
猜你喜欢
  • 2019-12-13
  • 2021-09-07
  • 2020-10-26
  • 2019-04-15
  • 2016-03-17
  • 2020-08-20
  • 1970-01-01
  • 2017-01-15
  • 1970-01-01
相关资源
最近更新 更多