4.8 将特征离散化
问题描述
将一个数值型特征离散化,分到多个离散的小区间中。
解决方案
根据数据离散化的方式,有两种方法可以使用。第一种方法是根据阈值将特征二值化:
第二种方法是根据多个阈值将数值型特征离散化:
记住,bins参数中的每个数字表示的是每个区间的左边界(左闭右开)。例如,20表示第一个区间不包括值为20的元素,只包括两个值小于20的元素。可以设置right参数为True来改变这个行为:
讨论
如果有足够的理由认为某个数值型特征应该被视为一个分类特征(categorical feature),那么离散化会是一个卓有成效的策略。例如,19岁和20岁的人消费习惯差距很小,但是20岁和21岁(在美国,21岁的年轻人就可以饮酒了)的人之间消费习惯差距会很大。在这个例子中,将人群划分成能喝酒的和不能喝酒的会很有用。同样,在其他情况下,将数据离散化为3个或更多区间也很有用。
在上述解决方案中,我们可以看到两种离散化方法:针对2个区间使用了scikit-learn的Binarizer,针对3个及以上的区间使用了NumPy的digitize。其实,只指定一个阈值, digitize也能像Binarizer一样二值化特征:
延伸阅读
● digitize的文档(http://bit.ly/2HSciFP)
本书评论