sklearn.preprocessing.OneHotEncoder()函數介紹

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章