国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

機(jī)器學(xué)習(xí)“特征編碼”的經(jīng)驗分享:魚還是熊掌?

trilever / 1002人閱讀

摘要:特征編碼類型本篇,我們主要說一下分類型特征的編碼方式。下面,我們要對這個變量進(jìn)行編碼,在中有現(xiàn)成的獨熱編碼方法,代碼如下原來的變量被拆分為兩個多帶帶的變量,這兩個變量就是原來的分類特征值有電梯和無電梯。

作者:xiaoyu

微信公眾號:Python數(shù)據(jù)科學(xué)

知乎:python數(shù)據(jù)分析師


1. 為什么要進(jìn)行特征編碼?

我們拿到的數(shù)據(jù)通常比較臟亂,可能會帶有各種非數(shù)字特殊符號,比如中文。下面這個表中顯示了我們最原始的數(shù)據(jù)集。而實際上機(jī)器學(xué)習(xí)模型需要的數(shù)據(jù)是數(shù)字型的,因為只有數(shù)字類型才能進(jìn)行計算。因此,對于各種特殊的特征值,我們都需要對其進(jìn)行相應(yīng)的編碼,也是量化的過程。

2. 特征編碼類型

本篇,我們主要說一下分類型特征的編碼方式。對于分類型數(shù)據(jù)的編碼,我們通常會使用兩種方式來實現(xiàn),分別是:one-hot encoding 和 label-encoding。下面我們先介紹一下這兩種編碼。

One-hot encoding

one-hot encoding也就是我們常常聽到的獨熱編碼(啞變量)。那么到底什么是獨熱編碼呢?我們來看一個例子,是二手房房價分析中所使用的數(shù)據(jù):

可以看到,圖中的ElevatorRenovation都是定類型數(shù)據(jù)。除去缺失值,Elevator分類有電梯和無電梯兩種。Renovation分為有精裝,簡裝,毛坯和其它四種。下面,我們要對Elevator這個變量進(jìn)行編碼,在pandas中有現(xiàn)成的獨熱編碼方法get_dummy,代碼如下:

pd.get_dummies(lianjia_df["Elevator"])

原來的Elevator變量被拆分為兩個多帶帶的變量,這兩個變量就是原來的分類特征值:有電梯和無電梯。并且新變量的特征值用數(shù)字0和1來替代,代表是否或者有無的概念。比如無電梯變量的1代表是(沒有電梯),相反,0就代表否(有電梯)。因此概括一下,獨熱編碼就是將原始特征變量轉(zhuǎn)換成以原始特征值分類的多維度的變量,并用是否(0,1)這種方式的新特征值替代和量化

Label encoding

label-encoding就是用標(biāo)簽進(jìn)行編碼的意思,即我們給特征變量自定義數(shù)字標(biāo)簽,量化特征。來看一個例子:

Class=["大一","大二","大三","大四"]
df = pd.DataFrame({"Class":Class})
df

Class特征是定序數(shù)據(jù)類型,也是分類類型,但比定類更高級,因為有排序。Label encoding就是對特征值進(jìn)行自定義式的標(biāo)簽編碼。比如將大一變?yōu)?,大二變?yōu)?,大三為3,大四為4。那么經(jīng)過編碼后,特征值將變?yōu)橐韵碌臉幼樱?/p>

classMap = {"大一":1,"大二":2,"大三":3,"大四":4}
df["Class"] = df["Class"].map(classMap)
df

上面就將Class特征進(jìn)行相應(yīng)的編碼。其實,Label encoding并沒有任何限制,你也可以將Class定義為10,20,30,40,只不過1,2,3,4看起來比較方便。因此總結(jié)概括,Label encoding就是將原始特征值編碼為自定義的數(shù)字標(biāo)簽完成量化編碼過程。

3. 兩種編碼方式的優(yōu)缺點
One-hot encoding

優(yōu)點:解決了分類器不好處理分類數(shù)據(jù)的問題,在一定程度上也起到了擴(kuò)充特征的作用。它的值只有0和1,不同的類型存儲在垂直的空間。

缺點:當(dāng)類別的數(shù)量很多時,特征空間會變得非常大,容易造成維度災(zāi)難。

Label encoding

優(yōu)點:解決了分類編碼的問題,可以自由定義量化數(shù)字。但其實也是缺點,因為數(shù)值本身沒有任何含義,只是排序。如大中小編碼為123,也可以編碼為321,即數(shù)值沒有意義。

缺點:可解釋性比較差。比如有[dog,cat,dog,mouse,cat],我們把其轉(zhuǎn)換為[1,2,1,3,2],這里就產(chǎn)生了一個奇怪的現(xiàn)象:dog和mouse的平均值是cat。因此,Label encoding編碼其實并沒有很寬的應(yīng)用場景。

4. 兩種編碼該如何區(qū)分和使用?

明白這兩種編碼方式并不難,難的是如何區(qū)分和使用。好多朋友面對數(shù)據(jù),會產(chǎn)生困惑,不知該使用哪種編碼方式最為合適。對于這個問題,有以下幾點需要考量:

特征的數(shù)據(jù)類型

所要使用的模型

事先聲明:編碼方式?jīng)]有固定的方式,具體問題還需具體分析。對模型結(jié)果有利的編碼才是最正確的。所以,實際中如果分不清哪種更好的時候,可能需要將兩種都嘗試進(jìn)行對比。

下面分享一下自己淺顯的經(jīng)驗(一般情況下的使用):

特征數(shù)據(jù)類型

對于定類類型的數(shù)據(jù),建議使用one-hot encoding。定類類型就是純分類,不排序,沒有邏輯關(guān)系。比如性別分男和女,男女不存在任何邏輯關(guān)系,我們不能說男就比女好,或者相反。再者,中國各省市分類也可以用獨熱編碼,同樣各省不存在邏輯關(guān)系,這時候使用one-hot encoding會合適些。但注意,一般會舍去一個變量,比如男的對立面肯定是女,那么女就是重復(fù)信息,所以保留其中一個變量即可。

對于定序類型的數(shù)據(jù),建議使用label encoding。定序類型也是分類,但有排序邏輯關(guān)系,等級上高于定類。比如,學(xué)歷分小學(xué),初中,高中,本科,研究生,各個類別之間存在一定的邏輯,顯然研究生學(xué)歷是最高的,小學(xué)最低。這時候使用Label encoding會顯得更合適,因為自定義的數(shù)字順序可以不破壞原有邏輯,并與這個邏輯相對應(yīng)。

所使用的模型

對數(shù)值大小敏感的模型必須使用one-hotencoding。典型的例子就是LR和SVM。二者的損失函數(shù)對數(shù)值大小是敏感的,并且變量間的數(shù)值大小是有比較意義的。而Label encoding的數(shù)字編碼沒有數(shù)值大小的含義,只是一種排序,因此對于這些模型都使用one-hot encoding。

對數(shù)值大小不敏感的模型(如樹模型)不建議使用one-hotencoding。一般這類模型為樹模型。如果分類類別特別多,那么one-hot encoding會分裂出很多特征變量。這時候,如果我們限制了樹模型的深度而不能向下分裂的話,一些特征變量可能就因為模型無法繼續(xù)分裂而被舍棄損失掉了。因此,此種情況下可以考慮使用Label encoding。

以上兩點考量需要綜合考慮,而非多帶帶判斷。也就是說需要結(jié)合數(shù)據(jù)類型和模型的情況來具體選擇編碼方式。

5. 總結(jié)

以上是博主對于兩種編碼方式的一些理解,如果有什么不對或者需要補(bǔ)充的地方,請大家指正。而對于連續(xù)型的變量,如果需要編碼首先需要進(jìn)行離散化(分箱),然后再使用上述編碼方式編碼。數(shù)據(jù)離散化的內(nèi)容我們后續(xù)進(jìn)行介紹。

關(guān)注微信公眾號:Python數(shù)據(jù)科學(xué),發(fā)現(xiàn)更多精彩內(nèi)容。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/19782.html

相關(guān)文章

  • 機(jī)器學(xué)習(xí)特征編碼經(jīng)驗分享還是熊掌

    摘要:特征編碼類型本篇,我們主要說一下分類型特征的編碼方式。下面,我們要對這個變量進(jìn)行編碼,在中有現(xiàn)成的獨熱編碼方法,代碼如下原來的變量被拆分為兩個單獨的變量,這兩個變量就是原來的分類特征值有電梯和無電梯。 作者:xiaoyu 微信公眾號:Python數(shù)據(jù)科學(xué) 知乎:python數(shù)據(jù)分析師 showImg(https://segmentfault.com/img/remote/146000...

    JinB 評論0 收藏0
  • 同樣是程序員,他轉(zhuǎn)行在新加坡賣走向巔峰!

    摘要:翁哥是一個不折不扣的程序員,曾經(jīng)在互聯(lián)網(wǎng)公司做了十幾年,可是期間他接觸了很多養(yǎng)魚的商人與愛好者,主要還是因為他喜歡魚與自然。唯一有點欠缺的就是,我們翁哥沒有分享他的商業(yè)模式,不過看到這里已經(jīng)很佩服他的激情與勇氣了。 本博客 貓叔的博客,轉(zhuǎn)載請申明出閱讀本文約3分鐘適讀人群:IT/互聯(lián)網(wǎng)工作者 身邊很多朋友最近都和我訴苦說有點迷茫... 我大多都詢問他們最近是否有制定什么目標(biāo),為什么制...

    binaryTree 評論0 收藏0
  • 打通本地部署和公有云,混合云架構(gòu)讓“”和“熊掌”兼得(一)

    摘要:對于上述問題,混合云架構(gòu)無疑是企業(yè)的最佳選擇。解決方案將本地環(huán)境與公有云連通組成混合云架構(gòu),實現(xiàn)對本地環(huán)境計算能力的快速擴(kuò)展。前言當(dāng)前各行各業(yè)在積極擁抱云計算,但由于一些歷史原因和合規(guī)要求導(dǎo)致很多企業(yè)全面上云比較困難,比如企業(yè)監(jiān)管制度及合規(guī)要求一些核心數(shù)據(jù)庫必須保留在本地數(shù)據(jù)中心;本地數(shù)據(jù)中心作為企業(yè)固定資產(chǎn)不容易完全拋棄;有些大型集團(tuán)企業(yè)IT架構(gòu)復(fù)雜,全面遷移上云的影響難以評估等等。因此,...

    Tecode 評論0 收藏0
  • 打通本地部署和公有云,混合云架構(gòu)讓“”和“熊掌”兼得(一)

    摘要:對于上述問題,混合云架構(gòu)無疑是企業(yè)的最佳選擇。解決方案將本地環(huán)境與公有云連通組成混合云架構(gòu),實現(xiàn)對本地環(huán)境計算能力的快速擴(kuò)展。前言當(dāng)前各行各業(yè)在積極擁抱云計算,但由于一些歷史原因和合規(guī)要求導(dǎo)致很多企業(yè)全面上云比較困難,比如企業(yè)監(jiān)管制度及合規(guī)要求一些核心數(shù)據(jù)庫必須保留在本地數(shù)據(jù)中心;本地數(shù)據(jù)中心作為企業(yè)固定資產(chǎn)不容易完全拋棄;有些大型集團(tuán)企業(yè)IT架構(gòu)復(fù)雜,全面遷移上云的影響難以評估等等。因此,...

    Tecode 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<