我們在建模之前,一般需要對資料進行預處理。對於分類變數,一般模型不能直接作為變數輸入,需要進行編碼。分類變數常用編碼方式如下:
有序變數:序號編碼
無序變數:獨熱編碼、二進位制編碼
下面為大家介紹獨熱編碼和二進位制編碼之間的區別。
1)獨熱編碼:獨熱編碼會將變數的不同取值(n種取值)分別賦予乙個只有1位為0的n維向量。例如星期,共有7個取值,獨熱編碼會把它編碼成乙個7維稀疏向量。星期一表示為(1,0,0,0,0,0,0),星期二表示為(0,1,0,0,0,0,0),星期三表示為(0,1,0,0,0,0,0),星期日表示為(0,0,0,0,0,0,1)。
2)二進位制編碼:二進位制編碼分為兩步,①先為變數的每乙個取值賦予乙個類別id;②將id對應的二進位制編碼作為結果。仍以星期為例,星期一的id為1,二進位制表示為001;星期二的id為2,二進位制表示為010;以此類推,可以得到變數所有取值的二進位制編碼。
二進位制和獨熱編碼的結果如下:
星期類別id二進位制編碼獨熱編碼
星期一1
(0,0,1)
(1,0,0,0,0,0,0)
星期二2
(0,1,0)
(0,1,0,0,0,0,0)
星期三3
(0,1,1)
(0,0,1,0,0,0,0)
星期四4
(1,0,0)
(0,0,0,1,0,0,0)
星期五5
(1,0,1)
(0,0,0,0,1,0,0)
星期六6
(1,1,0)
(0,0,0,0,0,1,0)
星期日7
(1,1,1)
(0,0,0,0,0,0,1)
對比發現:二進位制編碼後向量長度要比獨熱編碼短;獨熱編碼的向量長度等於特徵的取值個數,且每乙個取值變數只有一位為0其餘全部為1。
二進位制的編碼
假設有乙個只有4位的二進位制 0000,0001,0010,0011,0100,0101,0110,0111,1000,1001,1010,1011,1100,1101,1110,1111,共16個數,來表示 8到7共16個數。很自然的我們想到用0000 0111來表示0 7.8到 1該用誰來表示呢...
字元編碼和二進位制
python直譯器在載入 py 檔案中的 時,會對內容進行編碼 預設ascill python3現在編碼是unicode.ascii american standard code for information interchange,美國標準資訊交換 是基於拉丁字母的一套電腦編碼系統,主要用於顯示...
二進位制編碼知識
對於整型資料,二進位制的表示為符號位 數值位,對於浮點型資料,十進位制轉二進位制的方式如下 將十進位制浮點型資料轉換為二進位制時分別將整數部分和小數部分轉化為二進位制 對於整數部分,每次除2取餘直到商為0,第乙個除法所得餘數為最低位。即將餘數反序排列 對於小數部分,每次將其小數字乘以2,取其整數字,...