sklearn.preprocessing.OneHotEncoder
程序员文章站
2022-07-13 08:07:58
...
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)