摘要: 不懂One Hot編碼?讓大神手把手教你(文中代碼可以直接運行),用小例子清晰明了的帶你進入One hot 編碼!
更多深度文章,請關注:https://yq.aliyun.com/cloud
機器學習算法無法直接用於數據分類。數據分類必須轉換為數字才能進一步進行。
在本教程中,你將發現如何將輸入或輸出的序列數據轉換為一種熱編碼,以便於你在Python中深度學習的序列分類問題中使用。
· 1.什么是整數編碼和One-Hot編碼,以及為什么它們在機器學習中是必需的。
· 2.如何在Python中手工計算一個整數編碼和One-Hot編碼。
· 3.如何使用scikit-learn和Keras庫來自動對Python中的序列數據進行編碼。
3.One-Hot Encode with scikit-learn.
One-Hot編碼,又稱為一位有效編碼,主要是采用N位狀態寄存器來對N個狀態進行編碼,每個狀態都由他獨立的寄存器位,並且在任意時候只有一位有效。
One-Hot編碼是分類變量作為二進制向量的表示。這首先要求將分類值映射到整數值。然后,每個整數值被表示為二進制向量,除了整數的索引之外,它都是零值,它被標記為1。
接下來,我們可以創建一個二進制向量來表示每個整數值。對於2個可能的整數值,向量的長度為2。
編碼為0的“紅色”標簽將用二進制向量[1,0]表示,其中第0個索引被標記為值1。然后,編碼為1的“綠色”標簽將用一個二進制向量[0,1],其中第一個索引被標記為1。
One hot 編碼進行數據的分類更准確,許多機器學習算法無法直接用於數據分類。數據的類別必須轉換成數字,對於分類的輸入和輸出變量都是一樣的。
我們可以直接使用整數編碼,需要時重新調整。這可能適用於在類別之間存在自然關系的問題,例如溫度“冷”(0)和”熱“(1)的標簽。
當沒有關系時,可能會出現問題,一個例子可能是標簽的“狗”和“貓”。
在這些情況下,我們想讓網絡更具表現力,為每個可能的標簽值提供概率式數字。這有助於進行問題網絡建模。當輸出變量使用one-hot編碼時,它可以提供比單個標簽更准確的一組預測。
在這個例子中,我們將假設我們有一個字符串的例子,但是示例序列並不涵蓋所有可能的例子。
我們將假設所有可能輸入是小寫字母和空格的完整字母表。因此,我們將以此展示如何滾動我們自己的one hot編碼。
接下來,特定字符的索引標記為1。我們可以看到,編碼為7的第一個字母“h”整數由二進制向量表示,長度為27,第七個索引標記為1。
最后,我們反轉第一個字母的編碼並打印結果。我們通過使用NumPy argmax()函數定位具有最大值的二進制向量中的索引,然后使用字符值的反向查找表中的整數進行整數。