<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在電腦科學中,資料可以用很多不同的方式表示,自然而然地,每一種方式在某些領域都有其優點和缺點。
由於計算機無法處理分類資料,因為這些類別對它們沒有意義,如果我們希望計算機能夠處理這些資訊,就必須準備好這些資訊。
此操作稱為預處理。 預處理的很大一部分是編碼 - 以計算機可以理解的方式表示每條資料(該名稱的字面意思是“轉換為計算機程式碼”)。
在電腦科學的許多分支中,尤其是機器學習和數位電路設計中,One-Hot Encoding
被廣泛使用。
在本文中,我們將解釋什麼是 one-hot 編碼,並使用一些流行的選擇(Pandas 和 Scikit-Learn)在 Python 中實現它。 我們還將比較它與計算機中其他型別表示的有效性、優點和缺點,以及它的應用。
One-hot Encoding
是一種向量表示,其中向量中的所有元素都是 0,除了一個,它的值是 1,其中 1 表示指定元素類別的布林值。
還有一個類似的實現,稱為One-Cold Encoding
,其中向量中的所有元素都是 1,除了 1 的值是 0。
例如,[0, 0, 0, 1, 0] 和 [1 ,0, 0, 0, 0] 可以是One-hot 向量的一些範例。 與此類似的技術,也用於表示資料,例如統計中的虛擬變數。
這與其他編碼方案非常不同,其他編碼方案都允許多個位的值為 1。 下表比較了從 0 到 7 的數位在二進位制、格雷碼和 one-hot 中的表示:
實際上,對於每個 one-hot 向量,我們會問 n 個問題,其中 n 是我們擁有的類別數:
這是數位1嗎? 這是數位2嗎? ......這是數位7嗎?
每個“0”都是“假”,一旦我們在向量中找到“1”,問題的答案就是“真”。
One-hot 編碼將分類特徵轉換為一種更適合分類和迴歸演演算法的格式。 它在需要多種型別資料表示的方法中非常有用。
例如,一些向量可能最適合迴歸(基於以前的返回值逼近函數),而一些可能最適合分類(分類為固定集/類,通常是二元的):
這裡我們有六個分類資料的樣本輸入。 此處使用的編碼型別稱為“label encoding”——它非常簡單:我們只需為分類值分配一個 ID。
我們的計算機現在知道如何表示這些類別,因為它知道如何處理數位。 然而,這種編碼方法並不是很有效,因為它自然會賦予更高的數位更高的權重。
說我們的“Strawberries”類別大於或小於“Apples”是沒有意義的,或者將類別“Lemon”新增到“Peach”會給我們一個類別“Orange”,因為這些值不是序數。
如果我們用 one-hot 編碼表示這些類別,我們實際上會用列替換行。 我們通過為每個給定類別建立一個布林列來實現這一點,其中只有這些列之一可以為每個樣本取值 1:
我們可以從上表中看出,與二進位制或格雷碼相比,one-hot 表示需要更多的數位。 對於n個數位,one-hot編碼只能表示n個值,而Binary或Gray編碼可以用n個數位表示2n個值。
讓我們看一個簡單的範例,說明如何通過 one-hot 編碼方案將資料集中的分類列中的值轉換為對應的數值。
我們將建立一個非常簡單的資料集 - 國家及其 ID 的列表:
在上面的指令碼中,我們使用兩個列表(即 ids 和國家/地區)建立了一個Pandas dataframe
,稱為 df。 如果您在資料框上呼叫 head() 方法,會看到以下結果:
Countries列包含分類值。 我們可以使用 get_dummies() 函數將Countries列中的值轉換為one-hot編碼向量:
我們將 Country
作為 get_dummies()
方法的字首屬性的值傳遞,因此您可以在輸出中的每個單熱編碼列的標題之前看到字串 Country 字首。
另一種方法是使用另一個流行的庫 - Scikit-Learn
。 為此,它提供了 OneHotEncoder
類和 LabelBinarizer
類。
首先,匯入庫LabelBinarizer:
列印y值:
同樣,我們可以使用支援多列資料的 OneHotEncoder 類,與之前的類不同:
如上所述,計算機不太擅長處理分類資料。 雖然我們很好地理解分類資料,但這是由於計算機不具備的一種先決知識。
大多數機器學習技術和模型使用非常有限的資料集(通常是二進位制)。 神經網路消耗資料併產生 0..1 範圍內的結果,我們很少會超出該範圍。
簡而言之,絕大多數機器學習演演算法都會接收樣本資料(“訓練資料”),從中提取特徵。 基於這些特徵,建立了一個數學模型,然後用於進行預測或決策,而無需明確程式設計來執行這些任務。
一個很好的例子是分類,其中輸入在技術上可以是無界的,但輸出通常僅限於幾個類別。 在二元分類的情況下(假設我們正在教一個神經網路對貓和狗進行分類),我們的對映為 0 代表貓,1 代表狗。
大多數情況下,我們希望對其進行預測的訓練資料是分類的,就像上面提到的帶有水果的例子一樣。 同樣,雖然這對我們很有意義,但這些詞本身對演演算法沒有意義,因為它不理解它們。
在這些演演算法中使用one-hot
編碼來表示資料在技術上不是必需的,但如果我們想要一個有效的實現,它非常有用。
到此這篇關於在 Python 中進行 One-Hot 編碼的文章就介紹到這了,更多相關 Python 中進行 One-Hot 編碼內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45