sklearn.preprocessing.OneHotEncoder

来源:互联网 发布:mac os x 升级系统 编辑:程序博客网 时间:2024/05/21 09:51

sklearn.preprocessing.OneHotEncoder(n_values=’auto’, categorical_features=’all’,dtype=<type ‘numpy.float64’>, sparse=True,handle_unknown=’error’)用于处理分类变量,将变量的特征值转换为稀疏矩阵

主要参数说明:

n_values:每个特征的取值个数,可以为auto、整数或整数数组

①若为auto时,从训练集中获取特征的取值范围

②若为整数时,则特征的取值必须在range(n_values)范围内

③若为整数数组,则X[:,i]对应的分类特征有n_values[i]个取值值,特征的取值在range(n_values[i])内

categorical_features:可能取值为all、indices数组或mask

①若为all时,代表所有的特征都被视为分类特征

②若为indices数组时,表示分类特征的indices值

③若mask时,表示特征长度数组

sparse:若为True时,返回稀疏矩阵,否则返回数组

handle_unknown:可以为字符串、error、ignore,在转换过程中,如果出现位置的分类特征时,是抛出错误或直接忽略

In [2]: import numpy as np   ...: from sklearn import preprocessing   ...: y = np.array([[1,2,3],[2,5,6]])   ...: one_hot_encoder = preprocessing.OneHotEncoder()   ...: one_hot_encoder.fit_transform(y).toarray()   ...:Out[2]:array([[ 1.,  0.,  1.,  0.,  1.,  0.],       [ 0.,  1.,  0.,  1.,  0.,  1.]])
y有三个特征:第一个特征的取值为1、2,第二特征的取值为2、5,第三个特征的取值为3、6;可知三个特征的最大特征值分别为2、5、6,每个特征的取值都必须在range(n_values[i])范围内,因此n_values=[3,6,7]

n_values_属性:取每个特征的最大特征值+1

In [3]: one_hot_encoder.n_values_Out[3]: array([3, 6, 7])
feature_indices_属性:n_values_的累计

In [4]: one_hot_encoder.feature_indices_Out[4]: array([ 0,  3,  9, 16], dtype=int32)
active_features_属性

In [5]: one_hot_encoder.active_features_Out[5]: array([ 1,  2,  5,  8, 12, 15], dtype=int64)