獨熱編碼
阿新 • • 發佈:2019-01-12
獨熱編碼OneHotEncoder可以將分類字串變數數值化,例如:
這裡有三個樣本,每個樣本有三個特徵,我們可以用獨熱編碼將其轉換成數字,程式碼如下
from sklearn import preprocessing X=[['male','USA','firefox'],['female','UK','google'],['male','China','ie']] enc=preprocessing.OneHotEncoder() enc.fit(X) #訓練模型 print(enc.transform([['male','USA','google'],['female','UK','firefox']]).toarray())#測試集得出結果
執行結果如下可見三個特徵並不是轉換成三個數字,而是一個特徵轉換成了多個數字
接下來看看從檔案中匯入離散資料並將這些離散特徵通過獨熱編碼數值化,關鍵是要先把資料存入一個二維矩陣中(原檔案資料中第一行是變數名稱,否則會少一行)。
import pandas as pd import numpy as np from sklearn import preprocessing from pandas import DataFrame data=pd.read_excel(r"C:\Users\Liugengxin\Desktop\課程\資料科學\大作業\小資料集測試\離散.xlsx") #這裡用pandas的read_excel方法將資料讀入 arr=np.array(data) #將data轉換為陣列放在arr中 enc=preprocessing.OneHotEncoder() enc.fit(arr) #訓練模型 data=enc.transform(arr).toarray() #將測試集用該模型轉換成數字 DataFrame(data).to_excel(r'c:\Users\Liugengxin\Desktop\2.xlsx') #將結果寫入檔案中