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

sklearn.preprocessing.OneHotEncoder()函数介绍

程序员文章站 2022-07-13 08:07:22
...

sklearn.preprocessing.OneHotEncoder()函数介绍

sklearn.preprocessing.OneHotEncoder(categories=‘auto’, drop=None, sparse=True,dtype=np.float64, handle_unknown=‘error’)

本博客主要想对categories参数的使用方法进行说明。

下面对OneHotEncoder()函数的参数进行说行:

categories: 表示特征的取值,该参数取值为list或者默认的’auto’
①categories='auto’时,编码时特征的取值取决于你输入编码数据的特征取值,两者的取值范围是一致的。
②categories取值为list时,编码时特征的取值为你输入的list(eg:list_features)的取值。len(list_features)等于特征的数量,list_features中每个元素(eg:list_feature_values)又是一个list,这个list里面的元素为特征取值的所有枚举,list_feature_values=[feature_values_1,……,feature_values_n],feature_values_n是这个特征的某种取值。

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

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

以前版本的n_values参数已经被categories代替,categorical_features参数也被取消了,所以已经没有n_values和categorical_features参数了。

example:

from sklearn import preprocessing
import numpy as np
import random
#独热编码的数据,数据7个样本,每个样本的特征数量为2个,
cat_data =[9,3,4,1,7,5,0,9,2,3,4,5,6,7]
cat_data = np.array(cat_data).reshape(-1,2)#cat_data.shape=(7,2)
#特征0,1所有取值的列表,必须升序排列
feature0_list = [9,4,7,0,2,6,16,29,20]#取值范围有9个值
feature1_list = [3,1,5,9,5,7,25,89]#取值范围有8个值
feature0_list.sort()
feature1_list.sort()
#得到编码器
one_hot = preprocessing.OneHotEncoder(sparse=False,
                                      categories=[feature0_list,feature1_list])
random.shuffle(cat_data)
print(cat_data)
print('cat_data.shape:',cat_data.shape)

one_hot_label = one_hot.fit_transform(cat_data)
print(one_hot_label)
print('one_hot_label.shape:',one_hot_label.shape)

编码的结果为:

Connected to pydev debugger (build 191.7479.30)
[[9 3]
 [9 3]
 [4 1]
 [0 9]
 [7 5]
 [7 5]
 [6 7]]
cat_data.shape: (7, 2)
[[0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]
 [0. 0. 1. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]
 [1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]
 [0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]
 [0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]]
one_hot_label.shape: (7, 17)

Process finished with exit code 0