獨(dú)熱編碼
什么是獨(dú)熱編碼
????One-Hot編碼,又稱為一位有效編碼,主要是采用N位狀態(tài)寄存器來對(duì)N個(gè)狀態(tài)進(jìn)行編碼,每個(gè)狀態(tài)都由他獨(dú)立的寄存器位,并且在任意時(shí)候只有一位有效。
????One-Hot編碼是分類變量作為二進(jìn)制向量的表示。這首先要求將分類值映射到整數(shù)值。然后,每個(gè)整數(shù)值被表示為二進(jìn)制向量,除了整數(shù)的索引之外,它都是零值,它被標(biāo)記為1。
我們用如下案例來理解獨(dú)熱編碼:
性別特征:["男","女"]
祖國特征:["中國","美國,"法國"]
運(yùn)動(dòng)特征:["足球","籃球","羽毛球","乒乓球"]
怎么轉(zhuǎn)化成獨(dú)熱碼呢?
用獨(dú)熱碼來表示就是
男? =>? 10
女? =>? 01
祖國特征:["中國","美國,"法國"](這里N=3):
中國? =>? 100
美國? =>? 010
法國? =>? 001
運(yùn)動(dòng)特征:["足球","籃球","羽毛球","乒乓球"](這里N=4):
足球? =>? 1000
籃球? =>? 0100
羽毛球? =>? 0010
乒乓球? =>? 0001
所以,當(dāng)一個(gè)樣本為["男","中國","乒乓球"]的時(shí)候,完整的特征數(shù)字化的結(jié)果為:
[1,0,1,0,0,0,0,0,1]
知識(shí)點(diǎn)
OneHotEncoder(categories='auto', sparse='True', dtype='float')
參數(shù)說明:
1、categories:默認(rèn)’auto’,根據(jù)根據(jù)訓(xùn)練數(shù)據(jù)自動(dòng)確認(rèn)類別;默認(rèn)數(shù)組的列表,categories[i]保存第 i 列中預(yù)期的類別。傳遞的類別不應(yīng)在單個(gè)特征中混合字符串和數(shù)值,并且應(yīng)在數(shù)值的情況下進(jìn)行排序。使用的類別可以在categories_屬性中找到。
2、sparse:默認(rèn)為True,如果設(shè)置為 True 將返回稀疏矩陣,否則將返回一個(gè)數(shù)組。
3、dtype:默認(rèn)為float,所需的輸出數(shù)據(jù)類型。
我們用sklearn的preprocessing進(jìn)行數(shù)據(jù)預(yù)處理,案例如下:
