Kaggle學習筆記之分類變數

2022-10-08 23:48:28 字數 2359 閱讀 9611

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...