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

Python中的標(biāo)簽編碼和獨(dú)熱編碼示例詳解

 更新時(shí)間:2023年07月24日 15:31:34   作者:吃肉的小饅頭  
標(biāo)簽編碼是一種用于將分類列轉(zhuǎn)換為數(shù)值列的技術(shù),以便它們可以通過僅采用數(shù)值數(shù)據(jù)的機(jī)器學(xué)習(xí)模型進(jìn)行擬合,這篇文章主要介紹了Python中的標(biāo)簽編碼和獨(dú)熱編碼,需要的朋友可以參考下

在機(jī)器學(xué)習(xí)項(xiàng)目中,我們通常處理具有不同分類列的數(shù)據(jù)集,其中一些列的元素在有序變量類別中,例如列收入水平具有低,中或高的元素,在這種情況下,我們可以用1,2,3替換這些元素。其中1表示“低”,2表示“中”,3表示“高”。通過這種類型的編碼,我們試圖保留元素的含義,其中較高的權(quán)重被分配給具有較高優(yōu)先級(jí)的元素。

標(biāo)簽編碼

標(biāo)簽編碼是一種用于將分類列轉(zhuǎn)換為數(shù)值列的技術(shù),以便它們可以通過僅采用數(shù)值數(shù)據(jù)的機(jī)器學(xué)習(xí)模型進(jìn)行擬合。它是機(jī)器學(xué)習(xí)項(xiàng)目中重要的預(yù)處理步驟。

標(biāo)簽編碼示例

假設(shè)我們在某個(gè)數(shù)據(jù)集中有一個(gè)列Height,其中包含Tall,Medium和short元素。要將此分類列轉(zhuǎn)換為數(shù)值列,我們將對此列應(yīng)用標(biāo)簽編碼。在應(yīng)用標(biāo)簽編碼之后,“高度”列被轉(zhuǎn)換為具有元素0、1和2的數(shù)值列,其中0是高的標(biāo)簽,1是中等的標(biāo)簽,2是矮的標(biāo)簽。

在這里插入圖片描述

我們將在目標(biāo)列Species上的虹膜數(shù)據(jù)集上應(yīng)用Label Encoding。它包含三個(gè)物種Iris-setosa,Iris-versicolor,Iris-virginica。

# Import libraries 
import numpy as np
import pandas as pd
# Import dataset
df = pd.read_csv('../../data/Iris.csv')
df['species'].unique()
'''
array(['Iris-setosa', 'Iris-versicolor', 'Iris-virginica'], dtype=object)
'''

使用LabelEncoder()應(yīng)用Label Encoding后,我們的分類值將替換為數(shù)值[int]。

# Import label encoder
from sklearn import preprocessing
# label_encoder object knows 
# how to understand word labels.
label_encoder = preprocessing.LabelEncoder()
# Encode labels in column 'species'.
df['species']= label_encoder.fit_transform(df['species'])
df['species'].unique()
'''
array([0, 1, 2], dtype=int64)
'''

標(biāo)簽編碼的局限

標(biāo)簽編碼將分類數(shù)據(jù)轉(zhuǎn)換為數(shù)字?jǐn)?shù)據(jù),但它為每個(gè)數(shù)據(jù)類別分配一個(gè)唯一的數(shù)字(從0開始)。這可能導(dǎo)致在數(shù)據(jù)集的模型訓(xùn)練期間產(chǎn)生優(yōu)先級(jí)問題。具有高值的標(biāo)簽可以被認(rèn)為具有比具有較低值的標(biāo)簽高的優(yōu)先級(jí)。

具有輸出類Mexico、Paris、Dubai的屬性。在“標(biāo)簽編碼”上,此列允許將“Mexico”替換為“0”,將“Paris”替換為“1”,將“Dubai”替換為“2”。由此,可以解釋為在訓(xùn)練模型時(shí),Dubai具有比Mexico和Paris更高的優(yōu)先級(jí),但實(shí)際上,這些城市之間不存在這種優(yōu)先級(jí)關(guān)系。

獨(dú)熱編碼

我們在數(shù)據(jù)科學(xué)項(xiàng)目開發(fā)過程中遇到的大多數(shù)現(xiàn)實(shí)數(shù)據(jù)集都具有混合數(shù)據(jù)類型的列。這些數(shù)據(jù)集由分類列和數(shù)值列組成。然而,各種機(jī)器學(xué)習(xí)模型不適用于分類數(shù)據(jù),為了將這些數(shù)據(jù)擬合到機(jī)器學(xué)習(xí)模型中,需要將其轉(zhuǎn)換為數(shù)值數(shù)據(jù)。例如,假設(shè)數(shù)據(jù)集有一個(gè)Gender列,其中包含Male和Female等分類元素。這些標(biāo)簽沒有特定的偏好順序,而且由于數(shù)據(jù)是字符串標(biāo)簽,機(jī)器學(xué)習(xí)模型會(huì)誤解其中存在某種層次結(jié)構(gòu)。解決這個(gè)問題的一種方法是標(biāo)簽編碼,我們將為這些標(biāo)簽分配一個(gè)數(shù)值,例如映射到0和1的男性和女性。但這可能會(huì)在我們的模型中增加偏差,因?yàn)樗鼘㈤_始對女性參數(shù)給予更高的偏好,因?yàn)?>0,但理想情況下,兩個(gè)標(biāo)簽在數(shù)據(jù)集中同等重要。為了解決這個(gè)問題,我們將使用獨(dú)熱編碼技術(shù)。

獨(dú)熱編碼是我們用來在機(jī)器學(xué)習(xí)模型中將分類變量表示為數(shù)值的技術(shù)。

使用獨(dú)熱編碼的優(yōu)點(diǎn)包括:

  • 它允許在需要數(shù)值輸入的模型中使用分類變量。
  • 它可以通過向模型提供有關(guān)分類變量的更多信息來提高模型性能。
  • 它可以幫助避免排序問題,當(dāng)分類變量具有自然排序時(shí)可能發(fā)生這種情況(例如,“小”、“中”、“大”)。

使用獨(dú)熱編碼的缺點(diǎn)包括:

  • 它可能導(dǎo)致維度增加,因?yàn)闉樽兞恐械拿總€(gè)類別創(chuàng)建了單獨(dú)的列。這可能會(huì)使模型更加復(fù)雜,訓(xùn)練速度更慢。
  • 它可能導(dǎo)致稀疏數(shù)據(jù),因?yàn)榇蠖鄶?shù)觀測值在大多數(shù)獨(dú)熱編碼列中的值為0。
  • 它可能會(huì)導(dǎo)致過度擬合,特別是當(dāng)變量中有許多類別并且樣本量相對較小時(shí)。
  • 獨(dú)熱編碼是一種處理分類數(shù)據(jù)的強(qiáng)大技術(shù),但它可能導(dǎo)致增加的維度,稀疏性和過擬合。重要的是要謹(jǐn)慎使用它,并考慮其他方法,如序數(shù)編碼或二進(jìn)制編碼。

示例

在獨(dú)熱編碼中,分類參數(shù)將為男性和女性標(biāo)簽準(zhǔn)備單獨(dú)的列。因此,只要有男性,男性列中的值將為1,女性列中的值將為0,反之亦然。讓我們用一個(gè)例子來理解:考慮給定水果、其對應(yīng)的分類值和價(jià)格的數(shù)據(jù)。

在這里插入圖片描述

在對數(shù)據(jù)應(yīng)用獨(dú)熱編碼之后的輸出如下給出,

在這里插入圖片描述

創(chuàng)建一個(gè)dataframe來實(shí)現(xiàn)CSV文件的獨(dú)熱編碼。

# Program for demonstration of one hot encoding
# import libraries
import numpy as np
import pandas as pd
# import the data required
data = pd.read_csv('employee_data.csv')
print(data.head())

在這里插入圖片描述

分類列中的唯一元素

print(data['Gender'].unique())
print(data['Remarks'].unique())
'''
array(['Male', 'Female'], dtype=object)
array(['Nice', 'Good', 'Great'], dtype=object)
'''

列中元素的計(jì)數(shù)

data['Gender'].value_counts()
data['Remarks'].value_counts()
'''
Female    7
Male      5
Name: Gender, dtype: int64
Nice     5
Great    4
Good     3
Name: Remarks, dtype: int64
'''

我們有兩種方法可用于對分類列執(zhí)行one-hot編碼。

利用Pandas庫實(shí)現(xiàn)分類列的獨(dú)熱編碼

我們可以使用pandas中的pd.get_dummies()函數(shù)對分類列進(jìn)行one-hot編碼。

one_hot_encoded_data = pd.get_dummies(data, columns = ['Remarks', 'Gender'])
print(one_hot_encoded_data)

在這里插入圖片描述

我們可以觀察到數(shù)據(jù)中有3個(gè)備注和2個(gè)性別列。但是,如果它有n個(gè)唯一標(biāo)簽,則可以只使用n-1列來定義參數(shù)。例如,如果我們只保留Gender_Female列并刪除Gender_Male列,那么我們也可以傳達(dá)整個(gè)信息,當(dāng)標(biāo)簽為1時(shí),它表示女性,當(dāng)標(biāo)簽為0時(shí),它表示男性。通過這種方式,我們可以對分類數(shù)據(jù)進(jìn)行編碼,并減少參數(shù)的數(shù)量。

使用Scikit Learn Library進(jìn)行獨(dú)熱編碼

Scikit-learn(sklearn)是Python中一個(gè)流行的機(jī)器學(xué)習(xí)庫,它提供了許多用于數(shù)據(jù)預(yù)處理的工具。它提供了一個(gè)OneHotEncoder函數(shù),我們使用該函數(shù)將分類和數(shù)值變量編碼為二進(jìn)制向量,也是在實(shí)現(xiàn)該算法之前。確保分類值必須被標(biāo)記和編碼,因?yàn)楠?dú)熱編碼僅采用數(shù)字分類值。

# importing libraries
import pandas as pd
import numpy as np
from sklearn.preprocessing import OneHotEncoder
# Retrieving data
data = pd.read_csv('Employee_data.csv')
# Converting type of columns to category
data['Gender'] = data['Gender'].astype('category')
data['Remarks'] = data['Remarks'].astype('category')
# Assigning numerical values and storing it in another columns
data['Gen_new'] = data['Gender'].cat.codes
data['Rem_new'] = data['Remarks'].cat.codes
# Create an instance of One-hot-encoder
enc = OneHotEncoder()
# Passing encoded columns
enc_data = pd.DataFrame(enc.fit_transform(
    data[['Gen_new', 'Rem_new']]).toarray())
# Merge with main
New_df = data.join(enc_data)
print(New_df)

在這里插入圖片描述

注意:這里我們已經(jīng)將enc.fit_transform()方法轉(zhuǎn)換為數(shù)組,因?yàn)镺neHotEncoder的fit_transform方法返回SpiPy稀疏矩陣,因此當(dāng)我們有大量分類變量時(shí),首先轉(zhuǎn)換為數(shù)組可以保存空間。

到此這篇關(guān)于Python中的標(biāo)簽編碼和獨(dú)熱編碼的文章就介紹到這了,更多相關(guān)Python標(biāo)簽編碼和獨(dú)熱編碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實(shí)現(xiàn)一個(gè)簡單的udp通信的示例代碼

    python實(shí)現(xiàn)一個(gè)簡單的udp通信的示例代碼

    這篇文章主要介紹了python實(shí)現(xiàn)一個(gè)簡單的udp通信的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-02-02
  • python使用BeautifulSoup分析網(wǎng)頁信息的方法

    python使用BeautifulSoup分析網(wǎng)頁信息的方法

    這篇文章主要介紹了python使用BeautifulSoup分析網(wǎng)頁信息的方法,涉及Python使用BeautifulSoup模塊分析網(wǎng)頁信息的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • 詳解python如何提取瀏覽器中保存的網(wǎng)站登錄用戶名密碼

    詳解python如何提取瀏覽器中保存的網(wǎng)站登錄用戶名密碼

    很多瀏覽器都貼心地提供了保存用戶密碼功能,用戶一旦開啟,就不需要每次都輸入用戶名、密碼,非常方便,作為python腳本,能否拿到用戶提前保存在瀏覽器中的用戶名密碼,用以自動(dòng)登錄呢,下面我們就來看看吧
    2023-08-08
  • Python eval函數(shù)介紹及用法

    Python eval函數(shù)介紹及用法

    在本篇文章里小編給大家整理的是一篇關(guān)于Python eval函數(shù)介紹及用法,有興趣的朋友們可以參考下。
    2020-11-11
  • pygame實(shí)現(xiàn)彈力球及其變速效果

    pygame實(shí)現(xiàn)彈力球及其變速效果

    這篇文章主要為大家詳細(xì)介紹了pygame實(shí)現(xiàn)彈力球及其變速效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Python基本數(shù)據(jù)類型詳細(xì)介紹

    Python基本數(shù)據(jù)類型詳細(xì)介紹

    Python提供的基本數(shù)據(jù)類型主要有:布爾類型、整型、浮點(diǎn)型、字符串、列表、元組、集合、字典等等
    2014-03-03
  • Python+?Flask實(shí)現(xiàn)Mock?Server詳情

    Python+?Flask實(shí)現(xiàn)Mock?Server詳情

    這篇文章主要介紹了Python+?Flask實(shí)現(xiàn)Mock?Server詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • Pycharm配置Qt Designer及Pyuic的實(shí)現(xiàn)方法

    Pycharm配置Qt Designer及Pyuic的實(shí)現(xiàn)方法

    本文介紹了如何安裝Qt designer和Pyuic以及他們的基本用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • python中的urlparse()方法使用

    python中的urlparse()方法使用

    這篇文章主要介紹了python中的urlparse()方法使用,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • python 獲取文件下所有文件或目錄os.walk()的實(shí)例

    python 獲取文件下所有文件或目錄os.walk()的實(shí)例

    下面小編就為大家分享一篇python 獲取文件下所有文件或目錄os.walk()的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04

最新評論

阜康市| 呼图壁县| 方山县| 偃师市| 宿州市| 潜江市| 安平县| 深圳市| 关岭| 东宁县| 额尔古纳市| 阆中市| 子洲县| 胶南市| 宿迁市| 外汇| 新巴尔虎左旗| 朝阳区| 廊坊市| 会东县| 开江县| 上思县| 滨海县| 华池县| 永丰县| 梅州市| 双峰县| 宿迁市| 通化市| 大冶市| 昭苏县| 长阳| 长乐市| 旺苍县| 达孜县| 梅河口市| 日土县| 香港 | 五寨县| 观塘区| 安达市|