欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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)