亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

在 Python 中進(jìn)行 One-Hot 編碼

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

1.介紹?

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

2.什么是One-Hot編碼?

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

      還有一個(gè)類似的實(shí)現(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)計(jì)中的虛擬變量。

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

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

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

      每個(gè)“0”都是“假”,一旦我們?cè)谙蛄恐姓业?ldquo;1”,問(wèn)題的答案就是“真”。

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

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

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

      我們的計(jì)算機(jī)現(xiàn)在知道如何表示這些類別,因?yàn)樗廊绾翁幚頂?shù)字。 然而,這種編碼方法并不是很有效,因?yàn)樗匀粫?huì)賦予更高的數(shù)字更高的權(quán)重。

      說(shuō)我們的“Strawberries”類別大于或小于“Apples”是沒(méi)有意義的,或者將類別“Lemon”添加到“Peach”會(huì)給我們一個(gè)類別“Orange”,因?yàn)檫@些值不是序數(shù)。

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

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

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

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

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

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

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

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

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

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

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

打印y值:

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

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

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

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

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

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

      大多數(shù)情況下,我們希望對(duì)其進(jìn)行預(yù)測(cè)的訓(xùn)練數(shù)據(jù)是分類的,就像上面提到的帶有水果的例子一樣。 同樣,雖然這對(duì)我們很有意義,但這些詞本身對(duì)算法沒(méi)有意義,因?yàn)樗焕斫馑鼈儭?/p>

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

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

相關(guān)文章

  • Python OpenCV招商銀行信用卡卡號(hào)識(shí)別的方法

    Python OpenCV招商銀行信用卡卡號(hào)識(shí)別的方法

    這篇文章主要介紹了Python OpenCV招商銀行信用卡卡號(hào)識(shí)別的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 通過(guò)底層源碼理解YOLOv5的Backbone

    通過(guò)底層源碼理解YOLOv5的Backbone

    yolov5的特征提取網(wǎng)絡(luò)兼顧速度與精度,將PAN與PFN深度融合,對(duì)不同尺度魯棒性強(qiáng),可以即插即用,后接不同的檢測(cè)器,下面這篇文章主要給大家介紹了關(guān)于如何通過(guò)底層源碼理解YOLOv5的Backbone的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • 提升Python Scrapy庫(kù)數(shù)據(jù)采集速度實(shí)現(xiàn)高效爬蟲(chóng)

    提升Python Scrapy庫(kù)數(shù)據(jù)采集速度實(shí)現(xiàn)高效爬蟲(chóng)

    Scrapy是一個(gè)強(qiáng)大而靈活的Python爬蟲(chóng)框架,被廣泛用于數(shù)據(jù)采集、網(wǎng)站抓取和網(wǎng)絡(luò)爬蟲(chóng)開(kāi)發(fā),本文將深入介紹Scrapy的功能和用法,并提供豐富的示例代碼,幫助更好地理解和應(yīng)用
    2023-11-11
  • 使用Djongo模塊在Django中使用MongoDB數(shù)據(jù)庫(kù)

    使用Djongo模塊在Django中使用MongoDB數(shù)據(jù)庫(kù)

    Django框架為我們提供了簡(jiǎn)潔方便的ORM模型供我們對(duì)數(shù)據(jù)庫(kù)進(jìn)行各種操作,但是這個(gè)“數(shù)據(jù)庫(kù)”卻并不包括NoSQL的典型——MongoDB。不少Django初學(xué)者也會(huì)到處詢問(wèn),如何才能在Django中使用MongoDB。本文將介紹使用Djongo來(lái)在Django中集成MongoDB數(shù)據(jù)庫(kù)
    2021-06-06
  • Python : turtle色彩控制實(shí)例詳解

    Python : turtle色彩控制實(shí)例詳解

    今天小編就為大家分享一篇Python : turtle色彩控制實(shí)例詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • Python?中將數(shù)字轉(zhuǎn)換為字母的方法

    Python?中將數(shù)字轉(zhuǎn)換為字母的方法

    本文詳細(xì)介紹了在 Python 中將數(shù)字轉(zhuǎn)換為字母的幾種常用方法,我們介紹了使用 chr() 函數(shù)、string 模塊和 ord() 函數(shù)等方法,并提供了示例代碼幫助你理解和應(yīng)用這些方法,感興趣的朋友跟隨小編一起看看吧
    2023-06-06
  • Python封裝shell命令實(shí)例分析

    Python封裝shell命令實(shí)例分析

    這篇文章主要介紹了Python封裝shell命令,實(shí)例分析了Python將各種常用shell命令封裝進(jìn)一個(gè)類中以便調(diào)用的方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-05-05
  • 深度定制Python的Flask框架開(kāi)發(fā)環(huán)境的一些技巧總結(jié)

    深度定制Python的Flask框架開(kāi)發(fā)環(huán)境的一些技巧總結(jié)

    現(xiàn)在越來(lái)越多的人使用virtualenv虛擬環(huán)境部署Python項(xiàng)目,包括針對(duì)框架的實(shí)例文件夾與版本控制布置,這里我們就來(lái)整理關(guān)于深度定制Python的Flask框架開(kāi)發(fā)環(huán)境的一些技巧總結(jié)
    2016-07-07
  • Python中最快的循環(huán)姿勢(shì)實(shí)例詳解

    Python中最快的循環(huán)姿勢(shì)實(shí)例詳解

    python給我們提供了多個(gè)循環(huán)方法,比如while循環(huán)、for循環(huán)等,下面這篇文章主要給大家介紹了關(guān)于Python中最快的循環(huán)姿勢(shì),需要的朋友可以參考下
    2021-11-11
  • 在python中實(shí)現(xiàn)導(dǎo)入一個(gè)需要傳參的模塊

    在python中實(shí)現(xiàn)導(dǎo)入一個(gè)需要傳參的模塊

    這篇文章主要介紹了在python中實(shí)現(xiàn)導(dǎo)入一個(gè)需要傳參的模塊,具有很好的參考價(jià)值,希望可以給大家一個(gè)參考,以后在遇到這種的情況的時(shí)候,知道如何應(yīng)對(duì)
    2021-05-05

最新評(píng)論