利用python sklearn 將類別資料轉換成one-hot資料
阿新 • • 發佈:2018-12-19
做資料預處理的時候,經常會遇到需要將類別特徵轉換成有意義的數值的情況,通過這樣使類別資料能夠用於後續的分類預測任務。目前應用得最多的就是將其轉換成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列: