2018年3月1日 星期四

機器學習_ML_LabelEncoder

機器學習_ML_LabelEncoder

說明

官方文件
在另篇中我們說明了插補,資料插補完了以後,要面對的第二個問題就是文字特徵,甚至我們的類別都有可能是文字,怎麼辦?
這時候我們要透過編碼轉置,將文字轉成數值,讓我們往下看sklearn怎麼幫我們做到這一點。

IMPORT

from sklearn.preprocessing import LabelEncoder

CLASS

class sklearn.preprocessing.LabelEncoder(array)

方法

fit

擬合

transform

轉換

fit_transform

擬合+轉換

inverse_transform

還原

範例

資料集如下:
類別 身高 體重 性別 年紀
175 70 35
160 50 31
175 27
180 80
180 100 18
#  載入需求lib
import numpy as np
import pandas as pd
#  標籤轉換套件
from sklearn.preprocessing import LabelEncoder

#  手動寫入資料集,資料假裝透過插補完成了
ds = [
    ('胖',175,70,'男',35),
    ('瘦',160,50,'女',31),
    ('瘦',175,75,'男',27),
    ('胖',180,80,'女',27.5),
    ('胖',180,100,'男',18)]

columns = ['label','high','weight','sex','years']

#  假裝一下資料載入pandas,比較有fu
df = pd.DataFrame.from_records(ds,columns=columns)

#  確認資料是否載入pandas
df

#  資料拆分
X = df.iloc[:,1:].values
y = df.iloc[:,0].values
#  確認y的狀態
y
>>>array(['胖', '瘦', '瘦', '胖', '胖'], dtype=object)
#  標籤轉換
labelencoder = LabelEncoder()
y = labelencoder.fit_transform(y)
#  確認目標類別轉換狀況
y
>>>array([1, 0, 0, 1, 1], dtype=int64)
#  嚐試還原
labelencoder.inverse_transform(y)
>>>array(['胖', '瘦', '瘦', '胖', '胖'], dtype=object)

沒有留言:

張貼留言