日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

三、数据预处理——处理分类型数据:编码与哑变量

發(fā)布時間:2024/7/5 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 三、数据预处理——处理分类型数据:编码与哑变量 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

三、處理分類型特征:編碼與啞變量

點擊標(biāo)題即可獲取文章相關(guān)的源代碼文件喲!

在機器學(xué)習(xí)中,大多數(shù)算法,譬如邏輯回歸,支持向量機SVM,k近鄰算法等都只能夠處理數(shù)值型數(shù)據(jù),不能處理文字,在sklearn當(dāng)中,除了專用來處理文字的算法,其他算法在fit的時候全部要求輸入數(shù)組或矩陣,也不能夠?qū)胛淖中蛿?shù)據(jù)(其實手寫決策樹和普斯貝葉斯可以處理文字,但是sklearn中規(guī)定必須導(dǎo)入數(shù)值型)。

然而在現(xiàn)實中,許多標(biāo)簽和特征在數(shù)據(jù)收集完畢的時候,都不是以數(shù)字來表現(xiàn)的。比如說,學(xué)歷的取值可以是[“小 學(xué)”,“初中”,“高中”,“大學(xué)”],付費方式可能包含[“支付寶”,“現(xiàn)金”,“微信”]等等。在這種情況下,為了讓數(shù)據(jù)適應(yīng)算法和庫,我們必須將數(shù)據(jù)進行編碼,即是說,將文字型數(shù)據(jù)轉(zhuǎn)換為數(shù)值型。

  • preprocessing.LabelEncoder:標(biāo)簽專用,能夠?qū)⒎诸愞D(zhuǎn)換為分類數(shù)值





  • preprocessing.OrdinalEncoder:特征專用,能夠?qū)⒎诸愄卣鬓D(zhuǎn)換為分類數(shù)值




  • preprocessing.OneHotEncoder:獨熱編碼,創(chuàng)建啞變量

我們剛才已經(jīng)用OrdinalEncoder把分類變量Sex和Embarked都轉(zhuǎn)換成數(shù)字對應(yīng)的類別了。在艙門Embarked這一列中,我們使用[0,1,2]代表了三個不同的艙門,然而這種轉(zhuǎn)換是正確的嗎?

我們來思考三種不同性質(zhì)的分類數(shù)據(jù):
1) 艙門(S,C,Q)
三種取值S,C,Q是相互獨立的,彼此之間完全沒有聯(lián)系,表達的是S≠C≠Q(mào)的概念。這是名義變量
2) 學(xué)歷(小學(xué),初中,高中)
三種取值不是完全獨立的,我們可以明顯看出,在性質(zhì)上可以有高中>初中>小學(xué)這樣的聯(lián)系,學(xué)歷有高低,但是學(xué)歷取值之間卻不是可以計算的,我們不能說小學(xué) + 某個取值 = 初中。這是有序變量。
3) 體重(>45kg,>90kg,>135kg)
各個取值之間有聯(lián)系,且是可以互相計算的,比如120kg - 45kg = 90kg,分類之間可以通過數(shù)學(xué)計算互相轉(zhuǎn)換。這是有距變量

然而在對特征進行編碼的時候,這三種分類數(shù)據(jù)都會被我們轉(zhuǎn)換為[0,1,2],這三個數(shù)字在算法看來,是連續(xù)且可以計算的,這三個數(shù)字相互不等,有大小,并且有著可以相加相乘的聯(lián)系。所以算法會把艙門,學(xué)歷這樣的分類特征,都誤會成是體重這樣的分類特征。這是說,我們把分類轉(zhuǎn)換成數(shù)字的時候,忽略了數(shù)字中自帶的數(shù)學(xué)性質(zhì),所以給算法傳達了一些不準(zhǔn)確的信息,而這會影響我們的建模。
類別OrdinalEncoder可以用來處理有序變量,但對于名義變量,我們只有使用啞變量的方式來處理,才能夠盡量向算法傳達最準(zhǔn)確的信息:

這樣的變化,讓算法能夠徹底領(lǐng)悟,原來三個取值是沒有可計算性質(zhì)的,是“有你就沒有我”的不等概念。在我們的數(shù)據(jù)中,性別和艙門,都是這樣的名義變量。因此我們需要使用獨熱編碼,將兩個特征都轉(zhuǎn)換為啞變量。






特征可以做啞變量,標(biāo)簽也可以嗎?

可以,使用類sklearn.preprocessing.LabelBinarizer可以對做啞變量,許多算法都可以處理多標(biāo)簽問題(比如說決策樹),但是這樣的做法在現(xiàn)實中不常見,因此我們在這里就不贅述了。

總結(jié)

以上是生活随笔為你收集整理的三、数据预处理——处理分类型数据:编码与哑变量的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。