kaggle intermediate machine learning 分類變數
分類變數一般只有幾個固定的非數值取值,未經預處理直接使用機器學習模型處理大多數會報錯。
目錄結果分析
刪除分類變數
只適用於不包含有用資訊的列
序號編碼(ordinal encoding)
用不同的序號來表示不同的值,維度不變
one-hot編碼(one-hot encoding)
將分類變數轉換為相應數量的二進位制列,1代表某個輸入屬於該列的類別。(one-hot編碼會增加維度,一般在分類變數值不超過15個時使用)
# 找到分類變數的列表object_cols:
s = (x_train.dtypes == 'object')
object_cols = list(s[s].index)
1. 刪除分類變數
使用select_dtypes()
方法排除object
列
drop_x_train = x_train.select_dtypes(exclude=['object'])
drop_x_valid = x_valid.select_dtypes(exclude=['object'])
2. 序號編碼
使用ordinalencoder
類,對每一列分類變數使用序號編碼,分類變數列表為object_cols
。
from sklearn.preprocessing import ordinalencoder
# 使用copy防止原始資料被修改
label_x_train = x_train.copy()
label_x_valid = x_valid.copy()
# 對分類變數列使用序號編碼
ordinal_encoder = ordinalencoder()
label_x_train[object_cols] = ordinal_encoder.fit_transform(x_train[object_cols])
label_x_valid[object_cols] = ordinal_encoder.transform(x_valid[object_cols])
3. one-hot編碼
使用onehotencoder
類,handle_unknown='ignore'
表示忽略驗證集**現的未知分類變數,預設為'error'
表示報錯。sparse=false
表示返回乙個numpy
陣列,而不是稀疏矩陣。
from sklearn.preprocessing import onehotencoder
# 將one-hot編碼應用到分類變數的每一列
oh_encoder = onehotencoder(handle_unknown='ignore', sparse=false)
oh_cols_train = pd.dataframe(oh_encoder.fit_transform(x_train[object_cols]))
oh_cols_valid = pd.dataframe(oh_encoder.transform(x_valid[object_cols]))
# one-hot編碼會刪除索引,需要重新設定
oh_cols_train.index = x_train.index
oh_cols_valid.index = x_valid.index
# 刪除分類變數列(會被替換為one-hot列)
num_x_train = x_train.drop(object_cols, axis=1)
num_x_valid = x_valid.drop(object_cols, axis=1)
# 將one-hot編碼後的列拼接到數值列上
oh_x_train = pd.concat([num_x_train, oh_cols_train], axis=1)
oh_x_valid = pd.concat([num_x_valid, oh_cols_valid], axis=1)
使用mae(mean absolute error,越小越好)評估三種方法的質量:
175703.48185157913
165936.40548390493
166089.4893009678
從當前資料的結果看,刪除分類變數列效果mae最高,序號編碼和one-hot編碼差別不大。
一般來說,獨熱編碼效果最好,刪除分類變數列效果最差,但也會因具體情況而異。
OC學習筆記之分類
分類 category 的作用 在不修改原有的類的基礎上增加新的方法 乙個龐大的類可以分模組開發 乙個龐大的類可以有多個人來編寫,更有利於團隊合作 使用分類的目的 1.對現有的類進行擴充套件。比如可以擴充套件cocoa touch框架中的類,這些新增加的類跟框架中的類沒有區別。2.作為子類的替代手段...
Mysql 索引學習筆記之分類
3 索引語法 4 索引設計原則 5 索引的使用 btree 索引 最常見的索引型別,大部分索引都支援 b 樹索引。hash 索引 只有memory引擎支援 使用場景簡單 r tree 索引 空間索引 空間索引是myisam引擎的乙個特殊索引型別,主要用於地理空間資料型別,通常使用較少,不做特別介紹。...
機器學習之分類模型
iris 鳶尾花資料集是乙個經典資料集,在統計學習和機器學習領域都經常被用作示例。資料集內包含 3 類共 150 條記錄,每類各 50 個資料,每條記錄都有 4 項特徵 花萼長度 花萼寬度 花瓣長度 花瓣寬度,可以通過這4個特徵 鳶尾花卉屬於 iris setosa,iris versicolour...