欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

標(biāo)簽編碼

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

標(biāo)簽編碼示例

假設(shè)我們?cè)谀硞€(gè)數(shù)據(jù)集中有一個(gè)列Height,其中包含Tall,Medium和short元素。要將此分類(lèi)列轉(zhuǎn)換為數(shù)值列,我們將對(duì)此列應(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后,我們的分類(lèi)值將替換為數(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)簽編碼將分類(lèi)數(shù)據(jù)轉(zhuǎn)換為數(shù)字?jǐn)?shù)據(jù),但它為每個(gè)數(shù)據(jù)類(lèi)別分配一個(gè)唯一的數(shù)字(從0開(kāi)始)。這可能導(dǎo)致在數(shù)據(jù)集的模型訓(xùn)練期間產(chǎn)生優(yōu)先級(jí)問(wèn)題。具有高值的標(biāo)簽可以被認(rèn)為具有比具有較低值的標(biāo)簽高的優(yōu)先級(jí)。

具有輸出類(lèi)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ú)熱編碼

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

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

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

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

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

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

示例

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

在這里插入圖片描述

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

在這里插入圖片描述

創(chuàng)建一個(gè)dataframe來(lái)實(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())

在這里插入圖片描述

分類(lèi)列中的唯一元素

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
'''

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

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

我們可以使用pandas中的pd.get_dummies()函數(shù)對(duì)分類(lèi)列進(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列來(lái)定義參數(shù)。例如,如果我們只保留Gender_Female列并刪除Gender_Male列,那么我們也可以傳達(dá)整個(gè)信息,當(dāng)標(biāo)簽為1時(shí),它表示女性,當(dāng)標(biāo)簽為0時(shí),它表示男性。通過(guò)這種方式,我們可以對(duì)分類(lèi)數(shù)據(jù)進(jìn)行編碼,并減少參數(shù)的數(shù)量。

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

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

# 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)我們有大量分類(lèi)變量時(shí),首先轉(zhuǎn)換為數(shù)組可以保存空間。

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

相關(guān)文章

  • 對(duì)python list 遍歷刪除的正確方法詳解

    對(duì)python list 遍歷刪除的正確方法詳解

    今天小編就為大家分享一篇對(duì)python list 遍歷刪除的正確方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • DRF跨域后端解決之django-cors-headers的使用

    DRF跨域后端解決之django-cors-headers的使用

    這篇文章主要介紹了DRF跨域后端解決之django-cors-headers的使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • 在Python中使用成員運(yùn)算符的示例

    在Python中使用成員運(yùn)算符的示例

    這篇文章主要介紹了在Python中使用成員運(yùn)算符的示例,是Python學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • pycharm 關(guān)掉syntax檢查操作

    pycharm 關(guān)掉syntax檢查操作

    這篇文章主要介紹了pycharm 關(guān)掉syntax檢查操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • Pandas異常值處理小結(jié)

    Pandas異常值處理小結(jié)

    在Pandas中,異常值是數(shù)據(jù)中那些與其他數(shù)據(jù)點(diǎn)顯著不同的點(diǎn)本文主要介紹了Pandas異常值處理小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • 解決pytorch 數(shù)據(jù)類(lèi)型報(bào)錯(cuò)的問(wèn)題

    解決pytorch 數(shù)據(jù)類(lèi)型報(bào)錯(cuò)的問(wèn)題

    這篇文章主要介紹了解決pytorch 數(shù)據(jù)類(lèi)型報(bào)錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • Python多線程通信queue隊(duì)列用法實(shí)例分析

    Python多線程通信queue隊(duì)列用法實(shí)例分析

    這篇文章主要介紹了Python多線程通信queue隊(duì)列用法,結(jié)合實(shí)例形式分析了Python多線程通信queue隊(duì)列相關(guān)概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-03-03
  • 分享3個(gè)非常實(shí)用的?Python?模塊

    分享3個(gè)非常實(shí)用的?Python?模塊

    這篇文章主要爹大家分享的是分享3個(gè)非常實(shí)用的?Python?模塊,知道的人可能不多,但是特別的好用,分別是Psutil、Pendulum、Pyfiglet三種模塊,需要的小伙伴可以參考下面相關(guān)內(nèi)容,希望對(duì)你有所幫助
    2022-03-03
  • 高效測(cè)試用例組織算法pairwise之Python實(shí)現(xiàn)方法

    高效測(cè)試用例組織算法pairwise之Python實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇高效測(cè)試用例組織算法pairwise之Python實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • 全網(wǎng)最簡(jiǎn)約的Anaconda+Python3.7安裝教程Win10

    全網(wǎng)最簡(jiǎn)約的Anaconda+Python3.7安裝教程Win10

    這篇文章主要介紹了全網(wǎng)最簡(jiǎn)約的Anaconda+Python3.7安裝教程Win10,圖文講解全流程安裝方法,還不會(huì)的小伙伴快來(lái)看看吧
    2023-03-03

最新評(píng)論