声明:版权所有,转载请联系作者并注明出处 http://blog.csdn.net/u013719780?viewmode=contents
博主简介:风雪夜归子(英文名: Allen),机器学习算法攻城狮,喜爱钻研Machine Learning的黑科技,对Deep Learning和Artificial Intelligence充满兴趣,经常关注kaggle数据挖掘竞赛平台,对数据、Machine Learning和Artificial Intelligence有兴趣的各位童鞋可以一起探讨哦,个人CSDN博客: http://blog.csdn.net/u013719780?viewmode=contents
标签特征二元化
在这个主题中,我们将用另一种方式来演示分类变量。有些时候只有一两个分类特征是重要的,这时就要避免多余的维度,如果有多个分类变量就有可能会出现这些多余的维度。
Getting ready
处理分类变量还有另一种方法,不需要通过OneHotEncoder
,我们可以用LabelBinarizer
。这是一个阈值与分类变量组合的方法。演示其用法之前,让我们加载iris
数据集:
from sklearn import datasets as d
iris = d.load_iris()
target = iris.target
How to do it...
导入LabelBinarizer()
创建一个对象:
from sklearn.preprocessing import LabelBinarizer
label_binarizer = LabelBinarizer()
现在,将因变量的值转换成一个新的特征向量:
new_target = label_binarizer.fit_transform(target)
让我们看看new_target
和label_binarizer
对象的结果:
new_target.shape
new_target[:5]
new_target[-5:]
label_binarizer.classes_
How it works...
iris
的因变量基数为3
,就是说有三种值。当LabelBinarizer
将
N×1
N×1向量转换成
N×C
N×C矩阵时,
C
C就是
N×1
N×1向量的基数。需要注意的是,当label_binarizer
处理因变量之后,再转换基数以外的值都是[0,0,0]
:
label_binarizer.transform([4])
There's more...
0和1并不一定都是表示因变量中的阳性和阴性实例。例如,如果我们需要用1000
表示阳性值,用-1000
表示阴性值,我们可以用label_binarizer
处理:
label_binarizer = LabelBinarizer(neg_label=-1000, pos_label=1000)
label_binarizer.fit_transform(target)[:5]
阳性和阴性值的唯一限制是,它们必须为整数。