最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在 Python 中進行 One-Hot 編碼

 更新時間:2022年02月21日 15:51:14   作者:來西瓜  
這篇文章主要介紹了在 Python 中進行 One-Hot 編碼,? 在計算機科學(xué)的許多分支中,尤其是機器學(xué)習(xí)和數(shù)字電路設(shè)計中,One-Hot Encoding 被廣泛使用,下文我們就來實操在 Python 中進行 One-Hot 編碼吧,需要的朋友可以參考一下

1.介紹?

      在計算機科學(xué)中,數(shù)據(jù)可以用很多不同的方式表示,自然而然地,每一種方式在某些領(lǐng)域都有其優(yōu)點和缺點。
      由于計算機無法處理分類數(shù)據(jù),因為這些類別對它們沒有意義,如果我們希望計算機能夠處理這些信息,就必須準備好這些信息。
      此操作稱為預(yù)處理。 預(yù)處理的很大一部分是編碼 - 以計算機可以理解的方式表示每條數(shù)據(jù)(該名稱的字面意思是“轉(zhuǎn)換為計算機代碼”)。
      在計算機科學(xué)的許多分支中,尤其是機器學(xué)習(xí)和數(shù)字電路設(shè)計中,One-Hot Encoding 被廣泛使用。
      在本文中,我們將解釋什么是 one-hot 編碼,并使用一些流行的選擇(Pandas 和 Scikit-Learn)在 Python 中實現(xiàn)它。 我們還將比較它與計算機中其他類型表示的有效性、優(yōu)點和缺點,以及它的應(yīng)用。

2.什么是One-Hot編碼?

      One-hot Encoding 是一種向量表示,其中向量中的所有元素都是 0,除了一個,它的值是 1,其中 1 表示指定元素類別的布爾值。

      還有一個類似的實現(xiàn),稱為One-Cold Encoding,其中向量中的所有元素都是 1,除了 1 的值是 0。

      例如,[0, 0, 0, 1, 0] 和 [1 ,0, 0, 0, 0] 可以是One-hot 向量的一些示例。 與此類似的技術(shù),也用于表示數(shù)據(jù),例如統(tǒng)計中的虛擬變量。

      這與其他編碼方案非常不同,其他編碼方案都允許多個位的值為 1。 下表比較了從 0 到 7 的數(shù)字在二進制、格雷碼和 one-hot 中的表示:

實際上,對于每個 one-hot 向量,我們會問 n 個問題,其中 n 是我們擁有的類別數(shù):

      這是數(shù)字1嗎? 這是數(shù)字2嗎? ......這是數(shù)字7嗎?

      每個“0”都是“假”,一旦我們在向量中找到“1”,問題的答案就是“真”。

      One-hot 編碼將分類特征轉(zhuǎn)換為一種更適合分類和回歸算法的格式。 它在需要多種類型數(shù)據(jù)表示的方法中非常有用。

例如,一些向量可能最適合回歸(基于以前的返回值逼近函數(shù)),而一些可能最適合分類(分類為固定集/類,通常是二元的):

這里我們有六個分類數(shù)據(jù)的樣本輸入。 此處使用的編碼類型稱為“label encoding”——它非常簡單:我們只需為分類值分配一個 ID。

      我們的計算機現(xiàn)在知道如何表示這些類別,因為它知道如何處理數(shù)字。 然而,這種編碼方法并不是很有效,因為它自然會賦予更高的數(shù)字更高的權(quán)重。

      說我們的“Strawberries”類別大于或小于“Apples”是沒有意義的,或者將類別“Lemon”添加到“Peach”會給我們一個類別“Orange”,因為這些值不是序數(shù)。

      如果我們用 one-hot 編碼表示這些類別,我們實際上會用列替換行。 我們通過為每個給定類別創(chuàng)建一個布爾列來實現(xiàn)這一點,其中只有這些列之一可以為每個樣本取值 1:

我們可以從上表中看出,與二進制或格雷碼相比,one-hot 表示需要更多的數(shù)字。 對于n個數(shù)字,one-hot編碼只能表示n個值,而Binary或Gray編碼可以用n個數(shù)字表示2n個值。

?3.實現(xiàn)-Pandas?

      讓我們看一個簡單的示例,說明如何通過 one-hot 編碼方案將數(shù)據(jù)集中的分類列中的值轉(zhuǎn)換為對應(yīng)的數(shù)值。    

我們將創(chuàng)建一個非常簡單的數(shù)據(jù)集 - 國家及其 ID 的列表:

       在上面的腳本中,我們使用兩個列表(即 ids 和國家/地區(qū))創(chuàng)建了一個Pandas dataframe,稱為 df。 如果您在數(shù)據(jù)幀上調(diào)用 head() 方法,會看到以下結(jié)果:

Countries列包含分類值。 我們可以使用 get_dummies() 函數(shù)將Countries列中的值轉(zhuǎn)換為one-hot編碼向量:

我們將 Country 作為 get_dummies() 方法的前綴屬性的值傳遞,因此您可以在輸出中的每個單熱編碼列的標(biāo)題之前看到字符串 Country 前綴。

?4.實現(xiàn)-Scikit-Learn?

      另一種方法是使用另一個流行的庫 - Scikit-Learn。 為此,它提供了 OneHotEncoder 類和 LabelBinarizer 類。

首先,導(dǎo)入庫LabelBinarizer:

打印y值:

同樣,我們可以使用支持多列數(shù)據(jù)的 OneHotEncoder 類,與之前的類不同:

5.?One-hot編碼在機器學(xué)習(xí)領(lǐng)域的應(yīng)用?

      如上所述,計算機不太擅長處理分類數(shù)據(jù)。 雖然我們很好地理解分類數(shù)據(jù),但這是由于計算機不具備的一種先決知識。

      大多數(shù)機器學(xué)習(xí)技術(shù)和模型使用非常有限的數(shù)據(jù)集(通常是二進制)。 神經(jīng)網(wǎng)絡(luò)消耗數(shù)據(jù)并產(chǎn)生 0..1 范圍內(nèi)的結(jié)果,我們很少會超出該范圍。

      簡而言之,絕大多數(shù)機器學(xué)習(xí)算法都會接收樣本數(shù)據(jù)(“訓(xùn)練數(shù)據(jù)”),從中提取特征。 基于這些特征,創(chuàng)建了一個數(shù)學(xué)模型,然后用于進行預(yù)測或決策,而無需明確編程來執(zhí)行這些任務(wù)。

      一個很好的例子是分類,其中輸入在技術(shù)上可以是無界的,但輸出通常僅限于幾個類別。 在二元分類的情況下(假設(shè)我們正在教一個神經(jīng)網(wǎng)絡(luò)對貓和狗進行分類),我們的映射為 0 代表貓,1 代表狗。

      大多數(shù)情況下,我們希望對其進行預(yù)測的訓(xùn)練數(shù)據(jù)是分類的,就像上面提到的帶有水果的例子一樣。 同樣,雖然這對我們很有意義,但這些詞本身對算法沒有意義,因為它不理解它們。

      在這些算法中使用one-hot編碼來表示數(shù)據(jù)在技術(shù)上不是必需的,但如果我們想要一個有效的實現(xiàn),它非常有用。

到此這篇關(guān)于在 Python 中進行 One-Hot 編碼的文章就介紹到這了,更多相關(guān) Python 中進行 One-Hot 編碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決django中ModelForm多表單組合的問題

    解決django中ModelForm多表單組合的問題

    今天小編就為大家分享一篇解決django中ModelForm多表單組合的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • 你所不知道的Python技巧13招【實用】

    你所不知道的Python技巧13招【實用】

    有時候你會看到很Cool的Python代碼,你驚訝于它的簡潔,你不由自主地贊嘆:竟然還能這樣寫,其實,這些優(yōu)雅的代碼都要歸功于Python的特性,只要你能掌握這些Pythonic的技巧,你一樣可以寫出像詩一樣的Python代碼,本文主要介紹Python應(yīng)用的一些小技巧,一起來看下吧
    2016-12-12
  • 詳解python百行有效代碼實現(xiàn)漢諾塔小游戲(簡約版)

    詳解python百行有效代碼實現(xiàn)漢諾塔小游戲(簡約版)

    這篇文章主要介紹了詳解python百行有效代碼實現(xiàn)漢諾塔小游戲(簡約版),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Python3網(wǎng)絡(luò)爬蟲中的requests高級用法詳解

    Python3網(wǎng)絡(luò)爬蟲中的requests高級用法詳解

    本節(jié)我們再來了解下 Requests 的一些高級用法,如文件上傳,代理設(shè)置,Cookies 設(shè)置等等。感興趣的朋友跟隨小編一起看看吧
    2019-06-06
  • 如何利用Python將字典轉(zhuǎn)為成員變量

    如何利用Python將字典轉(zhuǎn)為成員變量

    當(dāng)我們在Python中寫一個class時,如果有一部分的成員變量需要用一個字典來命名和賦值,此時應(yīng)該如何操作呢?這篇文章主要給大家介紹了關(guān)于如何利用Python將字典轉(zhuǎn)為成員變量的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • wxPython實現(xiàn)整點報時

    wxPython實現(xiàn)整點報時

    這篇文章主要為大家詳細介紹了wxPython實現(xiàn)整點報時,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • 如何查看python關(guān)鍵字

    如何查看python關(guān)鍵字

    在本篇文章里小編給大家整理的是一篇關(guān)于python關(guān)鍵字的查看方法和實例內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-01-01
  • Pandas.DataFrame時間序列數(shù)據(jù)處理的實現(xiàn)

    Pandas.DataFrame時間序列數(shù)據(jù)處理的實現(xiàn)

    本文主要介紹了Pandas.DataFrame時間序列數(shù)據(jù)處理的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Python使用tablib生成excel文件的簡單實現(xiàn)方法

    Python使用tablib生成excel文件的簡單實現(xiàn)方法

    這篇文章主要介紹了Python使用tablib生成excel文件的方法,結(jié)合實例形式分析了tablib模塊的相關(guān)使用技巧,需要的朋友可以參考下
    2016-03-03
  • python如何復(fù)制別人的虛擬環(huán)境

    python如何復(fù)制別人的虛擬環(huán)境

    這篇文章主要介紹了python如何復(fù)制別人的虛擬環(huán)境問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05

最新評論

田东县| 孝昌县| 搜索| 昌宁县| 高台县| 池州市| 隆安县| 孟津县| 丹江口市| 依安县| 土默特右旗| 安仁县| 重庆市| 大邑县| 海阳市| 渭南市| 峡江县| 富顺县| 平乡县| 漳浦县| 且末县| 茌平县| 苏州市| 洪江市| 苍山县| 政和县| 南投县| 云梦县| 开远市| 太白县| 河北区| 仁怀市| 汾阳市| 霍林郭勒市| 炉霍县| 贵溪市| 滨州市| 民勤县| 台北县| 嘉兴市| 荥经县|