1. 程式人生 > >利用python sklearn 將類別資料轉換成one-hot資料

利用python sklearn 將類別資料轉換成one-hot資料

做資料預處理的時候,經常會遇到需要將類別特徵轉換成有意義的數值的情況,通過這樣使類別資料能夠用於後續的分類預測任務。目前應用得最多的就是將其轉換成one-hot編碼。以下是通過sklearn的方法很方便地實現。

首先讀取資料:

housing = pd.read_csv('housing.csv')
housing.head()

ocean_proximity 這一列是類別資料,並通過string表示。

首先將其轉換成數值

from sklearn.preprocessing import LabelEncoder
encoder = LabelEncoder()  
ocean = encoder.fit_transform(housing['ocean_proximity'].values)  
ocean = np.array([ocean]).T
ocean

因為有5個類別,所以將其對映成了1,2,3,4,5:

然後就可以將其轉換成one-hot編碼:

from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder()
a=enc.fit_transform(ocean)
a=a.toarray()
a

其為一個n*5維度的矩陣:

最後,可以將其和資料裡邊的其他特徵組合在一起:

housing = pd.concat([housing,pd.DataFrame(a)],axis=1)
housing = housing.drop(['ocean_proximity'],axis=1)
housing.head()

ocean_proximity 這一列被成功替換成了one-hot的5列: