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

Python分析特征數(shù)據(jù)類別與預(yù)處理方法速學(xué)

 更新時(shí)間:2023年02月15日 10:17:31   作者:fanstuck  
這篇文章主要為大家介紹了Python分析特征數(shù)據(jù)類別與預(yù)處理方法速學(xué),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

當(dāng)我們開(kāi)始準(zhǔn)備數(shù)據(jù)建模、構(gòu)建機(jī)器學(xué)習(xí)模型的時(shí)候,第一時(shí)間考慮的不應(yīng)該是就考慮到選擇模型的種類和方法。而是首先拿到特征數(shù)據(jù)和標(biāo)簽數(shù)據(jù)進(jìn)行研究,挖掘特征數(shù)據(jù)包含的信息以及思考如何更好的處理這些特征數(shù)據(jù)。那么數(shù)據(jù)類型本身代表的含義就需要我們進(jìn)行思考,究竟是定量計(jì)算還是進(jìn)行定類分析更好呢?這就是這篇文章將要詳解的一個(gè)問(wèn)題。

一、特征類型判別

特征類型判斷以及處理是前期特征工程重要的一環(huán),也是決定特征質(zhì)量好壞和權(quán)衡信息丟失最重要的一環(huán)。其中涉及到的數(shù)據(jù)有數(shù)值類型的數(shù)據(jù),例如:年齡、體重、身高這類特征數(shù)據(jù)。也有字符類型特征數(shù)據(jù),例如性別、社會(huì)階層、血型、國(guó)家歸屬等數(shù)據(jù)。

按照數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)格式可以歸納為兩類:

按照特征數(shù)據(jù)含義又可分為:

  • 離散型隨機(jī)變量:取值只能是可取范圍內(nèi)的指定數(shù)值類型的隨機(jī)變量,比如年齡、車流量此類數(shù)據(jù)。
  • 連續(xù)隨機(jī)變量:按照測(cè)量或者計(jì)算方法得到,在某個(gè)范圍內(nèi)連取n個(gè)值,此類數(shù)據(jù)可化為定類數(shù)據(jù)。
  • 二分類數(shù)據(jù):此類數(shù)據(jù)僅只有兩類:例如是與否、成功與失敗。
  • 多分類數(shù)據(jù):此類數(shù)據(jù)有多類:例如天氣出太陽(yáng)、下雨、陰天。
  • 周期型數(shù)據(jù):此類數(shù)據(jù)存在一個(gè)周期循環(huán):例如周數(shù)月數(shù)。

二、定量數(shù)據(jù)特征處理

拿到獲取的原始特征,必須對(duì)每一特征分別進(jìn)行歸一化,比如,特征A的取值范圍是[-1000,1000],特征B的取值范圍是[-1,1].如果使用logistic回歸,w1x1+w2x2,因?yàn)閤1的取值太大了,所以x2基本起不了作用。所以,必須進(jìn)行特征的歸一化,每個(gè)特征都單獨(dú)進(jìn)行歸一化。

關(guān)于處理定量數(shù)據(jù)我已經(jīng)在:數(shù)據(jù)預(yù)處理歸一化詳細(xì)解釋這篇文章里面講述的很詳細(xì)了,這里進(jìn)行前后關(guān)聯(lián),共有min-max標(biāo)準(zhǔn)化、Z-score標(biāo)準(zhǔn)化、Sigmoid函數(shù)標(biāo)準(zhǔn)化三種方法:

根據(jù)特征數(shù)據(jù)含義類型來(lái)選擇處理方法:

  • 離散型隨機(jī)變量處理方法:min-max標(biāo)準(zhǔn)化、Z-score標(biāo)準(zhǔn)化、Sigmoid函數(shù)標(biāo)準(zhǔn)
  • 連續(xù)隨機(jī)變量處理:Z-score標(biāo)準(zhǔn)化,Sigmoid函數(shù)標(biāo)準(zhǔn)

三.定類數(shù)據(jù)特征處理

我的上篇文章[數(shù)據(jù)預(yù)處理歸一化詳細(xì)解釋]并沒(méi)有介紹關(guān)于定類數(shù)據(jù)我們?nèi)绾稳ヌ幚?,在本篇文章詳?xì)介紹一些常用的處理方法:

1.LabelEncoding

直接替換方法適用于原始數(shù)據(jù)集中只存在少量數(shù)據(jù)需要人工進(jìn)行調(diào)整的情況。如果需要調(diào)整的數(shù)據(jù)量非常大且數(shù)據(jù)格式不統(tǒng)一,直接替換的方法也可以實(shí)現(xiàn)我們的目的,但是這種方法需要的工作量會(huì)非常大。因此, 我們需要能夠快速對(duì)整列變量的所有取值進(jìn)行編碼的方法。

LabelEncoding,即標(biāo)簽編碼,作用是為變量的 n 個(gè)唯一取值分配一個(gè)[0, n-1]之間的編碼,將該變量轉(zhuǎn)換成連續(xù)的數(shù)值型變量。

from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
le.fit(['擁堵','緩行','暢行'])
le.transform(['擁堵','擁堵','暢行','緩行'])
array([0, 0, 1, 2])

2.OneHotcoding

對(duì)于處理定類數(shù)據(jù)我們很容易想到將該類別的數(shù)據(jù)全部替換為數(shù)值:比如車輛擁堵情況,我們把擁堵標(biāo)為1,緩行為2,暢行為3.那么這樣是實(shí)現(xiàn)了標(biāo)簽編碼的,但同時(shí)也給這些無(wú)量綱的數(shù)據(jù)轉(zhuǎn)為了有量綱數(shù)據(jù),我們本意是沒(méi)有將它們比較之意的。機(jī)器可能會(huì)學(xué)習(xí)到“擁堵<緩行<暢行”,所以采用這個(gè)標(biāo)簽編碼是不夠的,需要進(jìn)一步轉(zhuǎn)換。因?yàn)橛腥N區(qū)間,所以有三個(gè)比特,即擁堵編碼為100,緩行為010,暢行為001.如此一來(lái)每?jī)蓚€(gè)向量之間的距離都是根號(hào)2,在向量空間距離都相等,所以這樣不會(huì)出現(xiàn)偏序性,基本不會(huì)影響基于向量空間度量算法的效果。

自然狀態(tài)碼為:000,001,010,011,100,101

獨(dú)熱編碼為:000001,000010,000100,001000,010000,100000

我們可以使用sklearn的onehotencoder來(lái)實(shí)現(xiàn):

from sklearn import preprocessing
enc = preprocessing.OneHotEncoder()
enc.fit([[0, 0, 1], [0, 1, 0], [1, 0, 0]])    # fit來(lái)學(xué)習(xí)編碼
enc.transform([[0, 0, 1]]).toarray()    # 進(jìn)行編碼
array([[1., 0., 1., 0., 0., 1.]])

數(shù)據(jù)矩陣是3*3的,那么原理是怎么來(lái)的呢?我們仔細(xì)觀察:

第一列的第一個(gè)特征維度有兩種取值0/1,所以對(duì)應(yīng)的編碼方式為10、01.

第二列的第二個(gè)特征也是一樣的,類比第三列的第三個(gè)特征。固001的獨(dú)熱編碼就是101001了。

因?yàn)榇蟛糠炙惴ㄊ腔谙蛄靠臻g中的度量來(lái)進(jìn)行計(jì)算的,為了使非偏序關(guān)系的變量取值不具有偏序性,并且到圓點(diǎn)是等距的。使用one-hot編碼,將離散特征的取值擴(kuò)展到了歐式空間,離散特征的某個(gè)取值就對(duì)應(yīng)歐式空間的某個(gè)點(diǎn)。將離散型特征使用one-hot編碼,會(huì)讓特征之間的距離計(jì)算更加合理。離散特征進(jìn)行one-hot編碼后,編碼后的特征,其實(shí)每一維度的特征都可以看做是連續(xù)的特征。就可以跟對(duì)連續(xù)型特征的歸一化方法一樣,對(duì)每一維特征進(jìn)行歸一化。比如歸一化到[-1,1]或歸一化到均值為0,方差為1。

將離散特征通過(guò)one-hot編碼映射到歐式空間,是因?yàn)?,在回歸,分類,聚類等機(jī)器學(xué)習(xí)算法中,特征之間距離的計(jì)算或相似度的計(jì)算是非常重要的,而我們常用的距離或相似度的計(jì)算都是在歐式空間的相似度計(jì)算,計(jì)算余弦相似性,基于的就是歐式空間。

優(yōu)點(diǎn):

獨(dú)熱編碼解決了分類器不好處理屬性數(shù)據(jù)的問(wèn)題,在一定程度上也起到了擴(kuò)充特征的作用。它的值只有0和1,不同的類型存儲(chǔ)在垂直的空間。

缺點(diǎn):

當(dāng)類別的數(shù)量很多時(shí),特征空間會(huì)變得非常大。在這種情況下,一般可以用PCA來(lái)減少維度。而且one hot encoding+PCA這種組合在實(shí)際中也非常有用。

應(yīng)用場(chǎng)景:

獨(dú)熱編碼用來(lái)解決類別型數(shù)據(jù)的離散值問(wèn)題。

無(wú)用場(chǎng)景:

將離散型特征進(jìn)行one-hot編碼的作用,是為了讓距離計(jì)算更合理,但如果特征是離散的,并且不用one-hot編碼就可以很合理的計(jì)算出距離,那么就沒(méi)必要進(jìn)行one-hot編碼。有些基于樹(shù)的算法在處理變量時(shí),并不是基于向量空間度量,數(shù)值只是個(gè)類別符號(hào),即沒(méi)有偏序關(guān)系,所以不用進(jìn)行獨(dú)熱編碼。  Tree Model不太需要one-hot編碼: 對(duì)于決策樹(shù)來(lái)說(shuō),one-hot的本質(zhì)是增加樹(shù)的深度。

代碼實(shí)現(xiàn)

方法一: 實(shí)現(xiàn)one-hot編碼有兩種方法:sklearn庫(kù)中的 OneHotEncoder() 方法只能處理數(shù)值型變量如果是字符型數(shù)據(jù),需要先對(duì)其使用 LabelEncoder() 轉(zhuǎn)換為數(shù)值數(shù)據(jù),再使用 OneHotEncoder() 進(jìn)行獨(dú)熱編碼處理,并且需要自行在原數(shù)據(jù)集中刪去進(jìn)行獨(dú)熱編碼處理的原變量。

import pandas as pd
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
lE = LabelEncoder()
df=pd.DataFrame({'路況':['擁堵','暢行','暢行','擁堵','暢行','緩行','緩行','擁堵','緩行','擁堵','擁堵','擁堵']})
df['路況']=lE.fit_transform(df['路況'])
OHE = OneHotEncoder()
X = OHE.fit_transform(df).toarray()
df = pd.concat([df, pd.DataFrame(X, columns=['擁堵', '緩行','暢行'])],axis=1)
df

方法二:

pandas自帶get_dummies()方法

get_dummies() 方法可以對(duì)數(shù)值數(shù)據(jù)和字符數(shù)據(jù)進(jìn)行處理,直接在原數(shù)據(jù)集上應(yīng)用該方法即可。該方法產(chǎn)生一個(gè)新的Dataframe,列名由原變量延伸而成。將其合并入原數(shù)據(jù)集時(shí),需要自行在原數(shù)據(jù)集中刪去進(jìn)行虛擬變量處理的原變量。

import pandas as pd
df=pd.DataFrame({'路況':['擁堵','暢行','暢行','擁堵','暢行','緩行','緩行','擁堵','緩行','擁堵','擁堵','擁堵']})
pd.get_dummies(df,drop_first=False) 

以上就是Python分析特征數(shù)據(jù)類別與預(yù)處理方法速學(xué)的詳細(xì)內(nèi)容,更多關(guān)于Python 數(shù)據(jù)類別分析預(yù)處理的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python+Matplotlib繪制雙y軸圖像的示例代碼

    Python+Matplotlib繪制雙y軸圖像的示例代碼

    這篇文章主要介紹了如何利用python的matplotlib繪制雙Y軸圖像,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有很好地幫助,需要的朋友可以參考下
    2022-04-04
  • Django與pyecharts結(jié)合的實(shí)例代碼

    Django與pyecharts結(jié)合的實(shí)例代碼

    這篇文章主要介紹了Django與pyecharts結(jié)合的實(shí)例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • Tensorflow中的placeholder和feed_dict的使用

    Tensorflow中的placeholder和feed_dict的使用

    這篇文章主要介紹了Tensorflow中的placeholder和feed_dict的使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • 親手教你用Python打造一款摸魚倒計(jì)時(shí)界面

    親手教你用Python打造一款摸魚倒計(jì)時(shí)界面

    前段時(shí)間在微博看到一段摸魚人的倒計(jì)時(shí)模板,感覺(jué)很有意思,于是我用了一個(gè)小時(shí)的時(shí)間寫一個(gè)頁(yè)面出來(lái),下面小編把實(shí)現(xiàn)過(guò)程分享給大家,對(duì)Python摸魚倒計(jì)時(shí)界面感興趣的朋友一起看看吧
    2021-12-12
  • python如何實(shí)現(xiàn)圖片重命名并保存

    python如何實(shí)現(xiàn)圖片重命名并保存

    這篇文章主要介紹了python如何實(shí)現(xiàn)圖片重命名并保存問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 使用Python完成SAP客戶端的打開(kāi)和系統(tǒng)登陸功能

    使用Python完成SAP客戶端的打開(kāi)和系統(tǒng)登陸功能

    這篇文章主要介紹了使用Python完成SAP客戶端的打開(kāi)和系統(tǒng)登陸,涉及到SAP的打開(kāi)和登錄過(guò)程,本文重點(diǎn)介紹如何通過(guò)Python完成SAP應(yīng)用程序的打開(kāi)并進(jìn)入特定的”用戶指定系統(tǒng)“,需要的朋友可以參考下
    2022-05-05
  • 在Python中如何使用yield

    在Python中如何使用yield

    在 Python 開(kāi)發(fā)中,yield 關(guān)鍵字的使用其實(shí)較為頻繁,例如大集合的生成,簡(jiǎn)化代碼結(jié)構(gòu)、協(xié)程與并發(fā)都會(huì)用到它,文中詳細(xì)介紹了yield的用法,需要的朋友可以參考下
    2021-06-06
  • 基于Python列表解析(列表推導(dǎo)式)

    基于Python列表解析(列表推導(dǎo)式)

    今天小編就為大家分享一篇基于Python列表解析(列表推導(dǎo)式),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • 創(chuàng)建Python Docker鏡像的詳細(xì)步驟

    創(chuàng)建Python Docker鏡像的詳細(xì)步驟

    Python和Docker是兩個(gè)極其流行的技術(shù),結(jié)合它們可以創(chuàng)建強(qiáng)大的應(yīng)用程序,Docker允許將應(yīng)用程序及其依賴項(xiàng)打包到一個(gè)獨(dú)立的容器中,而Python則提供了豐富的庫(kù)和工具來(lái)開(kāi)發(fā)應(yīng)用程序,本文將提供如何創(chuàng)建Python Docker鏡像的全面指南,,需要的朋友可以參考下
    2023-12-12
  • Python獲取時(shí)間戳代碼實(shí)例

    Python獲取時(shí)間戳代碼實(shí)例

    這篇文章主要介紹了Python獲取時(shí)間戳代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09

最新評(píng)論

北碚区| 招远市| 文登市| 遵义县| 确山县| 大厂| 饶河县| 温泉县| 化州市| 东阳市| 新营市| 静宁县| 赣榆县| 梅河口市| 黎川县| 沁阳市| 斗六市| 喀什市| 双桥区| 青神县| 游戏| 黔江区| 甘谷县| 定日县| 焉耆| 安岳县| 清原| 武定县| 巍山| 乳源| 安岳县| 广东省| 时尚| 响水县| 伊通| 广昌县| 龙里县| 理塘县| 枣阳市| 余姚市| 华坪县|