就是轉換為數值類型方便機器學習模型處理
一、編碼
這里舉例將Survived這一行的數據轉換為編碼,原本是字符串類型
2、將標簽編碼并賦值回去
from sklearn.preprocessing import LabelEncoder
y = data.iloc[:, -1] # 最后一列拿出來
print(y)
le = LabelEncoder()
le = le.fit(y)
label_ = le.transform(y)# label_ = le.fit_transform(y) # 上面兩個可以合并成這個
# le.inverse_transform(label_) # 逆向編碼,和fit_transform相反data.iloc[:, -1] = label_ # 填回最后一列
# 那么多可以簡寫成這樣:
# data.iloc[:, -1] = LabelEncoder().fit_transform(data[:, -1])
data.head()
此時的Survived那一列變成了數字類型
二、啞變量
這里以Embarked那一列舉例,它有三個值,這個時候就可以變成二進制的值來存儲使用
from sklearn.preprocessing import OneHotEncoder
X = data.iloc[:,1:-1]enc = OneHotEncoder(categories='auto').fit(X)
result = enc.transform(X).toarray() # 可以合并為:OneHotEncoder().fit(X).transform(X).toarray()
result
0和1列是Sex的編碼,其它的是Embarked的編碼
三、二值化
原本年齡那一列是數值類型的,然后想要以30歲為界限進行分類
from sklearn.preprocessing import Binarizer
X = data_2.iloc[:, 0].values.reshape(-1,1) # 找到年齡那一列,并轉換為二維數組
transformer = Binarizer(threshold=30).fit_transform(X)
四、分段
將年齡按照段來分開
from sklearn.preprocessing import KBinsDiscretizerX = data.iloc[:, 0].values.reshape(-1,1) # 取出Age那一列
est = KBinsDiscretizer(n_bins=3, encode='ordinal', strategy='uniform')
est.fit_transform(X)
也可以不用整數形式顯示,用啞變量
# 年齡分三段,啞變量進行顯示,onehot控制
est = KBinsDiscretizer(n_bins=3, encode='onehot', strategy='uniform')
est.fit_transform(X).toarray()