One Hot編碼是什么?為什么要用它,什么時候用它?
點擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時間送達(dá)
當(dāng)你在玩ML模型的時候,你會在任何地方遇到這個“One hot encoding”的術(shù)語。

當(dāng)你在玩ML模型的時候,你會在任何地方遇到這個“One hot encoding”術(shù)語。你可以看到一個one hot編碼器的sklearn文檔,其中說“使用one-hot也就是one-of- k模式編碼分類整數(shù)特征”。不是很清楚,對吧?或者至少不適合我。讓我們看看one hot編碼到底是什么。
One hot編碼方法是將分類變量轉(zhuǎn)換成一種形式,這種形式可以提供給ML算法,以便更好地進(jìn)行預(yù)測。
假設(shè)數(shù)據(jù)集如下:
╔════════════╦═════════════════╦════════╗
║ CompanyName Categoricalvalue ║ Price ║
╠════════════╬═════════════════╣════════║
║ VW ╬ 1 ║ 20000 ║
║ Acura ╬ 2 ║ 10011 ║
║ Honda ╬ 3 ║ 50000 ║
║ Honda ╬ 3 ║ 10000 ║
╚════════════╩═════════════════╩════════╝分類值表示數(shù)據(jù)集中條目的數(shù)值。例如:如果數(shù)據(jù)集中有另一家公司,它的分類值應(yīng)該是4。隨著惟一條目數(shù)量的增加,分類值也相應(yīng)地增加。
上表只是一種表示。實際上,分類值從0開始一直到N-1個類別。
你可能已經(jīng)知道,可以使用sklearn的LabelEncoder完成分類值分配。
現(xiàn)在讓我們回到one hot編碼:假設(shè)我們按照sklearn文檔中給出的說明來進(jìn)行one hot編碼,然后進(jìn)行一些清理,最后得到以下結(jié)果:
╔════╦══════╦══════╦════════╦
║ VW ║ Acura║ Honda║ Price ║
╠════╬══════╬══════╬════════╬
║ 1 ╬ 0 ╬ 0 ║ 20000 ║
║ 0 ╬ 1 ╬ 0 ║ 10011 ║
║ 0 ╬ 0 ╬ 1 ║ 50000 ║
║ 0 ╬ 0 ╬ 1 ║ 10000 ║
╚════╩══════╩══════╩════════╝在我們進(jìn)一步討論之前,你能想到一個原因嗎?為什么僅僅使用標(biāo)簽編碼給模型訓(xùn)練是不夠的?為什么需要one hot編碼?
標(biāo)簽編碼的問題是,它假定類別值越高,類別越好。“等等,什么! ?”
讓我解釋一下:這種組織形式的前提是基于類比的值,VW > Acura > Honda。假設(shè)你的模型內(nèi)部計算平均值,那么我們得到,1+3 = 4/2 =2。這意味著:VW 和Honda的平均水平是 Acura。這絕對是個災(zāi)難。這個模型的預(yù)測會有很多誤差。
這就是為什么我們使用one hot編碼器來執(zhí)行類別的“二值化”,并將其作為一個特征來訓(xùn)練模型。
另一個例子:假設(shè)你有一個“flower”特征,它可以接受“daffodil”、“l(fā)ily”和“rose”的值。一個one hot編碼將“flower”特征轉(zhuǎn)換為三個特征,“is_daffodil”、“is_lily”和“is_rose”,它們都是二進(jìn)制的。
見下圖:

好消息!
小白學(xué)視覺知識星球
開始面向外開放啦??????
下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程 在「小白學(xué)視覺」公眾號后臺回復(fù):擴(kuò)展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。 下載2:Python視覺實戰(zhàn)項目52講 在「小白學(xué)視覺」公眾號后臺回復(fù):Python視覺實戰(zhàn)項目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學(xué)校計算機(jī)視覺。 下載3:OpenCV實戰(zhàn)項目20講 在「小白學(xué)視覺」公眾號后臺回復(fù):OpenCV實戰(zhàn)項目20講,即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。 交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進(jìn)入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~

