【问题标题】:Binning values of columns (features) in scikit-learnscikit-learn 中列(特征)的分箱值
【发布时间】:2018-10-03 23:50:40
【问题描述】:

假设我有一个包含以下行的训练数据集(数据集中的几个样本):

X1     X2      X3      Y
1      44.9    44.9    32.49370277
8      402.4   1       28.79444926
2      19.1    14      21.89679219
1      -26.3   11.3    20.36124795
1      -19.4   9.2     18.72667562
2      4.1     2.1     16.93972179
0      -1.2    1.2     16.59192825
1      3.4     3.4     16.43835616
3      7.8     4.6     16.35924841

我有三个变量(X1 到 X3)作为我的特征和一个目标变量(Y)。当我在数据集(包括超过 10,000 个样本)上训练模型时,我发现这些特征之间没有很强的相关性。

现在,我想对每一列(X1、X2 和 X3)中的值进行分组,看看它是否会影响我的模型的结果。我想知道sklearn中是否有任何功能可以做到这一点?一个函数/方法,它对每列的值进行分箱/分组,并为我提供这三个特征(X1 到 X3)的所有可能分箱的组合,以便我可以对它们进行全部测试并找到最佳模型。

我注意到在 sklearn 中有一个名为 KBinsDiscretizer 的函数用于分箱,我应该将其用于我提到的目的吗?如果是,我应该如何选择垃圾箱的数量?基本上我想知道“binning”是否是我应该寻找的关键字,以便对数据集中的特征值进行分组以用于训练模型?值可以是连续的或离散的。

如果 python 中有任何其他库/包可以执行我所描述的操作,那也会很有帮助。

【问题讨论】:

    标签: python machine-learning scikit-learn binning


    【解决方案1】:

    这样做,决定你想要存储变量的自定义边界。

    bins_boundary = [0,1,2,8]
    labels = ['A','B','C'] #labels
    #CREATE BUCKETS
    df['x1'] = pd.cut(df['x1'], bins=bins, labels=labels)
    

    出于各种目的,连续变量是 bin to buckets。有时您想将回归问题转化为分类。

    还可以查看 pandas qcut 以获得有效的离散化。您还可以使用 quantiles 和变量的总体分布来创建 bin。

    【讨论】:

      猜你喜欢
      • 2015-01-12
      • 2016-02-25
      • 2018-02-24
      • 2018-06-01
      • 2014-02-17
      • 1970-01-01
      • 2017-03-09
      • 2021-03-26
      • 2013-04-30
      相关资源
      最近更新 更多