假设我有一个训练数据集,其中包括以下几行(数据集中的几对样本):
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中还有其他库/软件包可以执行我所描述的操作,那也会有所帮助。
答案 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
和变量的总体分布来创建垃圾箱。