绑定scikit-learn中的列(功能)值

时间:2018-10-03 23:50:40

标签: python machine-learning scikit-learn binning

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

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中还有其他库/软件包可以执行我所描述的操作,那也会有所帮助。

1 个答案:

答案 0 :(得分:0)

以这种方式进行操作,确定要在其上存储变量的自定义边界。

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

出于各种目的,连续变量被存储到存储桶中。有时您想将回归问题转化为分类。

还要查看熊猫 qcut 以获得有效的离散化效果。您还可以使用 quantiles 和变量的总体分布来创建垃圾箱。