欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python數(shù)據(jù)清洗和預(yù)處理入門完整指南

數(shù)據(jù)分析與開發(fā) ? 來源:關(guān)于數(shù)據(jù)分析與可視化 ? 作者:關(guān)于數(shù)據(jù)分析與可 ? 2022-12-21 13:50 ? 次閱讀

凡事預(yù)則立,不預(yù)則廢,訓(xùn)練機(jī)器學(xué)習(xí)模型也是如此。數(shù)據(jù)清洗和預(yù)處理是模型訓(xùn)練之前的必要過程,否則模型可能就「廢」了。本文是一個(gè)初學(xué)者指南,將帶你領(lǐng)略如何在任意的數(shù)據(jù)集上,針對(duì)任意一個(gè)機(jī)器學(xué)習(xí)模型,完成數(shù)據(jù)預(yù)處理工作。

數(shù)據(jù)預(yù)處理是建立機(jī)器學(xué)習(xí)模型的第一步(也很可能是最重要的一步),對(duì)最終結(jié)果有決定性的作用:如果你的數(shù)據(jù)集沒有完成數(shù)據(jù)清洗和預(yù)處理,那么你的模型很可能也不會(huì)有效——就是這么簡(jiǎn)單。

人們通常認(rèn)為,數(shù)據(jù)預(yù)處理是一個(gè)非??菰锏牟糠帧5褪恰缸龊脺?zhǔn)備」和「完全沒有準(zhǔn)備」之間的差別,也是表現(xiàn)專業(yè)和業(yè)余之間的差別。就像為度假做好事先準(zhǔn)備一樣,如果你提前將行程細(xì)節(jié)確定好,就能夠預(yù)防旅途變成一場(chǎng)噩夢(mèng)。

那么,應(yīng)該怎么做呢?

本文將帶你領(lǐng)略,如何在任意的數(shù)據(jù)集上,針對(duì)任意一個(gè)機(jī)器學(xué)習(xí)模型,完成數(shù)據(jù)預(yù)處理工作。

導(dǎo)入數(shù)據(jù)

讓我們從導(dǎo)入數(shù)據(jù)預(yù)處理所需要的庫開始吧。庫是非常棒的使用工具:將輸入傳遞給庫,它則完成相應(yīng)的工作。你可以接觸到非常多的庫,但在Python中,有三個(gè)是最基礎(chǔ)的庫。任何時(shí)候,你都很可能最終還是使用到它們。這三個(gè)在使用Python時(shí)最流行的庫就是Numpy、Matplotlib和Pandas。Numpy是滿足所有數(shù)學(xué)運(yùn)算所需要的庫,由于代碼是基于數(shù)學(xué)公式運(yùn)行的,因此就會(huì)使用到它。Maplotlib(具體而言,Matplotlib.pyplot)則是滿足繪圖所需要的庫。Pandas則是最好的導(dǎo)入并處理數(shù)據(jù)集的一個(gè)庫。對(duì)于數(shù)據(jù)預(yù)處理而言,Pandas和Numpy基本是必需的。

最適當(dāng)?shù)姆绞绞?,在?dǎo)入這些庫的時(shí)候,賦予其縮寫的稱呼形式,在之后的使用中,這可以節(jié)省一定的時(shí)間成本。這一步非常簡(jiǎn)單,可以用如下方式實(shí)現(xiàn):


importnumpyasnp importmatplotlib.pyplotasplt importpandasaspd

現(xiàn)在,可以通過輸入如下語句讀入數(shù)據(jù)集

dataset=pd.read_csv('my_data.csv')

這個(gè)語句告訴Pandas(pd)來讀入數(shù)據(jù)集。在本文中,我也附上數(shù)據(jù)集的前幾行數(shù)據(jù)。

1e27d75a-80e6-11ed-8abf-dac502259ad0.png

我們有了數(shù)據(jù)集,但需要?jiǎng)?chuàng)建一個(gè)矩陣來保存自變量,以及一個(gè)向量來保存因變量。為了創(chuàng)建保存自變量的矩陣,輸入語句:

X=dataset.iloc[:,:-1].values

第一個(gè)冒號(hào)表示提取數(shù)據(jù)集的全部行,「:-1」則表示提取除最后一列以外的所有列。最后的「.values」表示希望提取所有的值。接下來,我們希望創(chuàng)建保存因變量的向量,取數(shù)據(jù)的最后一列。輸入語句:

y=dataset.iloc[:,3].values

記住,在查看數(shù)據(jù)集的時(shí)候,索引(index)是從 0 開始的。所以,如果希望統(tǒng)計(jì)列數(shù),從 0 開始計(jì)數(shù)而不是 1?!竅:, :3]」會(huì)返回animal、age和worth三列。其中0表示animal,1表示age,2表示worth。對(duì)于這種計(jì)數(shù)方法,即使你沒見過,也會(huì)在很短的時(shí)間內(nèi)適應(yīng)。

如果有缺失數(shù)據(jù)會(huì)怎么樣?

事實(shí)上,我們總會(huì)遇到數(shù)據(jù)缺失。對(duì)此,我們可以將存在缺失的行直接刪除,但這不是一個(gè)好辦法,還很容易引發(fā)問題。因此需要一個(gè)更好的解決方案。最常用的方法是,用其所在列的均值來填充缺失。為此,你可以利用scikit-learn預(yù)處理模型中的inputer類來很輕松地實(shí)現(xiàn)。(如果你還不知道,那么我強(qiáng)烈建議你搞明白它:scikit-learn包含非常棒的機(jī)器學(xué)習(xí)模型)。在機(jī)器學(xué)習(xí)中,你可能并不適應(yīng)諸如「方法」、「類」和「對(duì)象」這些術(shù)語。這不是什么大問題!

類就是我們希望為某目的所建立的模型。如果我們希望搭建一個(gè)棚子,那么搭建規(guī)劃就是一個(gè)類。

對(duì)象是類的一個(gè)實(shí)例。在這個(gè)例子中,根據(jù)規(guī)劃所搭建出來的一個(gè)棚子就是一個(gè)對(duì)象。同一個(gè)類可以有很多對(duì)象,就像可以根據(jù)規(guī)劃搭建出很多個(gè)棚子一樣。

方法是我們可以在對(duì)象上使用的工具,或在對(duì)象上實(shí)現(xiàn)的函數(shù):傳遞給它某些輸入,它返回一個(gè)輸出。這就像,當(dāng)我們的棚子變得有點(diǎn)不通氣的時(shí)候,可以使用「打開窗戶」這個(gè)方法。

為了使用imputer,輸入類似如下語句。


fromsklearn.preprocessingimportImputer imputer=Imputer(missing_values=np.nan,strategy=‘mean’,axis=0)

均值填充是默認(rèn)的填充策略,所以其實(shí)不需要指定,加在此處是為了方便了解可以包含什么信息。missing_values的默認(rèn)值是nan。如果你的數(shù)據(jù)集中存在「NaN」形式的缺失值,那么你應(yīng)該關(guān)注np.nan,可以在此查看官方文檔:https://scikit-learn.org/stable/modules/generated/sklearn.impute.SimpleImputer.html

為了擬合這個(gè)imputer,輸入:

imputer=imputer.fit(X[:,1:3])

我們只希望在數(shù)據(jù)存在缺失的列上擬合imputer。這里的第一個(gè)冒號(hào)表示包含所有行,而「1:3」則表示我們?nèi)∷饕秊?1 和 2 的列。不要擔(dān)心,你很快就會(huì)習(xí)慣 Python的計(jì)數(shù)方法的。

現(xiàn)在,我們希望調(diào)用實(shí)際上可以替換填充缺失數(shù)據(jù)的方法。通過輸入以下語句完成:

X[:,1:3]=imputer.transform(X[:,1:3])

1e35cb3a-80e6-11ed-8abf-dac502259ad0.jpg

多嘗試一些不同的填充策略。也許在某些項(xiàng)目中,你會(huì)發(fā)現(xiàn),使用缺失值所在列的中位數(shù)或眾數(shù)來填充缺失值會(huì)更加合理。填充策略之類的決策看似細(xì)微,但其實(shí)意義重大。因?yàn)榱餍型ㄓ玫姆椒ú⒉灰欢ň褪钦_的選擇,對(duì)于模型而言,均值也不一定是最優(yōu)的缺失填充選擇。

畢竟,幾乎所有正閱讀本文的人,都有高于平均水平的手臂數(shù)。

如果包含屬性數(shù)據(jù),會(huì)怎么樣呢?

這是一個(gè)好問題。沒有辦法明確地計(jì)算諸如貓、狗、麋鹿的均值。那么可以怎么做呢?可以將屬性數(shù)據(jù)編碼為數(shù)值!你可能希望使用sklearn.preprocessing所提供的LabelEncoder類。從你希望進(jìn)行編碼的某列數(shù)據(jù)入手,調(diào)用label encoder并擬合在你的數(shù)據(jù)上。


fromsklearn.preprocessingimportLabelEncoder labelencoder_X=LabelEncoder() X[:,0]=labelencoder_X.fit_transform(X[:,0])

(還記得括號(hào)里的數(shù)字所表示的含義嗎?「:」表示希望提取所有行的數(shù)據(jù),0表示希望提取第一列)

這就是將第一列中的屬性變量替換為數(shù)值所需的全部工作了。例如,麋鹿將用0表示,狗將用2表示,貓將用3表示。

你發(fā)現(xiàn)什么潛在問題了嗎?

標(biāo)注體系暗含以下信息:所使用的數(shù)值層級(jí)關(guān)系可能會(huì)影響模型結(jié)果:3 比 0 的數(shù)值大,但貓并不一定比麋鹿大。

我們需要?jiǎng)?chuàng)建啞變量。

我們可以為貓創(chuàng)建一列數(shù)據(jù),為麋鹿創(chuàng)建一列數(shù)據(jù),……以此類推。然后,將每一列分別以 0/1 填充(認(rèn)為 1=Yes,0 = No)。這表明,如果原始列的值為貓,那么就會(huì)在麋鹿一列得到 0,狗一列得到 0,貓一列得到 1。

看上去非常復(fù)雜。輸入 OneHotEncoder 吧!

導(dǎo)入編碼器,并制定對(duì)應(yīng)列的索引。


fromsklearn.preprocessingimportOneHotEncoder onehotencoder=OneHotEncoder(categorical_features=[0])

接著是一點(diǎn)擬合和轉(zhuǎn)換。

X=onehotencoder.fit_transform(X).toarray()

現(xiàn)在,你的那一列數(shù)據(jù)已經(jīng)被替換為了這種形式:數(shù)據(jù)組中的每一個(gè)屬性數(shù)據(jù)對(duì)應(yīng)一列,并以1和0取代屬性變量。非常貼心,對(duì)吧?如果我們的Y列也是如「Y」和「N」的屬性變量,那么我們也可以在其上使用這個(gè)編碼器。


labelencoder_y=LabelEncoder() y=labelencoder_y.fit_transform(y)

這會(huì)直接擬合并將 y 表示為編碼變量:1 表示「Y」,0 表示「N」。

1e4e0e7a-80e6-11ed-8abf-dac502259ad0.jpg

訓(xùn)練集與測(cè)試集的劃分

現(xiàn)在,你可以開始將數(shù)據(jù)集劃分為訓(xùn)練集和測(cè)試集了。這已經(jīng)在之前的圖像分類教程一文中論述過了。不過記得,一定要將你的數(shù)據(jù)分為訓(xùn)練集和測(cè)試集,永遠(yuǎn)不要用測(cè)試集來訓(xùn)練!需要避免過擬合(可以認(rèn)為,過擬合就像在一次測(cè)驗(yàn)前,記憶了許多細(xì)節(jié),但沒有理解其中的信息。如果只是記憶細(xì)節(jié),那么當(dāng)你自己在家復(fù)習(xí)知識(shí)卡片時(shí),效果會(huì)很好,但在所有會(huì)考察新信息的真實(shí)測(cè)驗(yàn)中,都會(huì)不及格。)

現(xiàn)在,我們有了需要學(xué)習(xí)的模型。模型需要在數(shù)據(jù)上訓(xùn)練,并在另外的數(shù)據(jù)上完成測(cè)試。對(duì)訓(xùn)練集的記憶并不等于學(xué)習(xí)。模型在訓(xùn)練集上學(xué)習(xí)得越好,就應(yīng)該在測(cè)試集給出更好的預(yù)測(cè)結(jié)果。過擬合永遠(yuǎn)都不是你想要的結(jié)果,學(xué)習(xí)才是!

首先,導(dǎo)入:

fromsklearn.model_selectionimporttrain_test_split

現(xiàn)在,可以創(chuàng)建X_train、X_test、y_train和y_test集合了。

X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=0)

一種常見的方法是將數(shù)據(jù)集按80/20進(jìn)行劃分,其中80%的數(shù)據(jù)用作訓(xùn)練,20%的數(shù)據(jù)用作測(cè)試。這也是為何指定test_size為0.2的原因。你也可以根據(jù)自己的需求來任意劃分。你并不需要設(shè)置random_state,這里設(shè)置的原因是為了可以完全復(fù)現(xiàn)結(jié)果。

特征縮放

什么是特征縮放?為什么需要特征縮放?

看看我們的數(shù)據(jù)。我們有一列動(dòng)物年齡,范圍是4~17,還有一列動(dòng)物價(jià)值,范圍是83,000。價(jià)值一欄的數(shù)值不僅遠(yuǎn)大于年齡一欄,而且它還包含更加廣闊的數(shù)據(jù)范圍。這表明,歐式距離將完全由價(jià)值這一特征所主導(dǎo),而忽視年齡數(shù)據(jù)的主導(dǎo)效果。如果歐式距離在特定機(jī)器學(xué)習(xí)模型中并沒有具體作用會(huì)怎么樣?縮放特征將仍能夠加速模型,因此,你可以在數(shù)據(jù)預(yù)處理中,加入特征縮放這一步。

特征縮放的方法有很多。但它們都意味著我們將所有的特征放在同一量綱上,進(jìn)而沒有一個(gè)會(huì)被另一個(gè)所主導(dǎo)。

導(dǎo)入相關(guān)庫開始:

fromsklearn.preprocessingimportStandardScaler

創(chuàng)建一個(gè)需要縮放對(duì)象并調(diào)用Standard Scaler。

sc_X=StandardScaler()

直接在數(shù)據(jù)集上進(jìn)行擬合以及變換。獲取對(duì)象并應(yīng)用方法。


X_train=sc_X.fit_transform(X_train) X_test=sc_X.transform(X_test)

不需要在測(cè)試集上進(jìn)行擬合,只進(jìn)行變換。


sc_y=StandardScaler() y_train=sc_y.fit_transform(y_train)

對(duì)于啞變量而言,是否需要進(jìn)行縮放?

對(duì)于這個(gè)問題,有些人認(rèn)為需要,有些則認(rèn)為不需要。這取決于你對(duì)模型可解釋性的看重誠(chéng)度。將所有數(shù)據(jù)縮放至同一量綱固然有好處,但缺點(diǎn)是,這丟失了解釋每個(gè)觀測(cè)樣本歸屬于哪個(gè)變量的便捷性。

對(duì)于Y呢?如果因變量是0和1,那么并不需要進(jìn)行特征縮放。這是一個(gè)具有明確相關(guān)值的分類問題。但如果其取值范圍非常大,那么答案是你需要做縮放。

恭喜你,你已經(jīng)完成了數(shù)據(jù)預(yù)處理的工作!

通過少量的幾行代碼,你已經(jīng)領(lǐng)略了數(shù)據(jù)清洗和預(yù)處理的基礎(chǔ)。毫無疑問,在數(shù)據(jù)預(yù)處理這一步中,你可以加入很多自己的想法:你可能會(huì)想如何填充缺失值。思考是否縮放特征以及如何縮放特征?是否引入啞變量?是否要對(duì)數(shù)據(jù)做編碼?是否編碼啞變量……有非常多需要考慮的細(xì)節(jié)?,F(xiàn)在,你已經(jīng)完全了解了這些,可以親自動(dòng)手試試了,準(zhǔn)備數(shù)據(jù)吧!

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8442

    瀏覽量

    133103
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4809

    瀏覽量

    85053
  • 預(yù)處理
    +關(guān)注

    關(guān)注

    0

    文章

    33

    瀏覽量

    10514

原文標(biāo)題:Python數(shù)據(jù)清洗 & 預(yù)處理入門完整指南

文章出處:【微信號(hào):DBDevs,微信公眾號(hào):數(shù)據(jù)分析與開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    機(jī)器學(xué)習(xí)為什么需要數(shù)據(jù)預(yù)處理

    數(shù)據(jù)預(yù)處理是準(zhǔn)備原始數(shù)據(jù)并使其適合機(jī)器學(xué)習(xí)模型的過程。這是創(chuàng)建機(jī)器學(xué)習(xí)模型的第一步也是關(guān)鍵的一步。 創(chuàng)建機(jī)器學(xué)習(xí)項(xiàng)目時(shí),我們并不總是遇到干凈且格式化的數(shù)據(jù)。在對(duì)
    的頭像 發(fā)表于 08-24 09:20 ?2016次閱讀
    機(jī)器學(xué)習(xí)為什么需要<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>預(yù)處理</b>

    E2441B VME/VXI總線預(yù)處理器接口用戶指南

    E2441B VME/VXI總線預(yù)處理器接口用戶指南
    發(fā)表于 01-14 16:22

    Python數(shù)據(jù)預(yù)處理方法

    機(jī)器學(xué)習(xí)-Python實(shí)踐Day3(特征工程--數(shù)據(jù)預(yù)處理2)
    發(fā)表于 06-03 15:55

    數(shù)據(jù)探索與數(shù)據(jù)預(yù)處理

    目錄1數(shù)據(jù)探索與數(shù)據(jù)預(yù)處理21.1 賽題回顧21.2 數(shù)據(jù)探索性分析與異常值處理21.3 相關(guān)性分析52特征工程82.1 光伏發(fā)電領(lǐng)域特征8
    發(fā)表于 07-12 08:37

    使用Bionconductor完成基因芯片預(yù)處理的流程

    的整體框架,自行學(xué)習(xí)其他廠商或種類(例如SNP芯片或CHIP-chip芯片)的芯片處理方法5.1快速入門例5-1 從數(shù)據(jù)包CLL中載入芯片數(shù)據(jù),完成
    發(fā)表于 07-23 07:38

    防火墻原理入門

    防火墻原理入門 防火墻能增強(qiáng)機(jī)構(gòu)內(nèi)部網(wǎng)絡(luò)的安全性。防火墻系統(tǒng)決定了哪些內(nèi)部服務(wù)可以被外界訪問;外界的哪些人可以訪問內(nèi)部的服務(wù)以及哪
    發(fā)表于 08-01 10:21 ?1035次閱讀
    防火墻原<b class='flag-5'>理入門</b>

    數(shù)字信號(hào)處理入門指南

    數(shù)字信號(hào)處理入門指南什么是DSP? 數(shù)字信號(hào)處理器(DSP)采集已被數(shù)字化的現(xiàn)實(shí)世界的聲音、音頻、視頻、溫度、壓力或位置等信號(hào),并從數(shù)學(xué)的角度對(duì)其進(jìn)
    發(fā)表于 09-15 08:55 ?1355次閱讀
    數(shù)字信號(hào)<b class='flag-5'>處理入門</b><b class='flag-5'>指南</b>

    [Python入門指南].(Python.Tutorial).G

    介紹python的一篇較好的入門資料
    發(fā)表于 09-05 08:38 ?0次下載

    Web使用挖掘中的數(shù)據(jù)預(yù)處理模塊、實(shí)現(xiàn)方法及發(fā)展前景

    數(shù)據(jù)預(yù)處理是Web使用挖掘的第一個(gè)環(huán)節(jié)。預(yù)處理的對(duì)象是Web 日志文件。由于Web 日志文件的格式是半結(jié)構(gòu)化的,且日志中的數(shù)據(jù)不夠完整,因此
    的頭像 發(fā)表于 11-06 09:32 ?3636次閱讀
    Web使用挖掘中的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>預(yù)處理</b>模塊、實(shí)現(xiàn)方法及發(fā)展前景

    Python的Anaconda入門指南

    Python入門學(xué)習(xí)并不是一件簡(jiǎn)單的事情,也不是輕輕松松簡(jiǎn)簡(jiǎn)單單就可以快速入門的,尤其是環(huán)境問題,讓不少的Python初學(xué)者頭痛不已,本篇文章小編就帶大家看一下
    的頭像 發(fā)表于 01-22 17:32 ?2705次閱讀

    機(jī)器學(xué)習(xí)的特征預(yù)處理問題討論

    本文我們來討論特征預(yù)處理的相關(guān)問題。主要包括特征的歸一化和標(biāo)準(zhǔn)化,異常特征樣本清洗與樣本數(shù)據(jù)不平衡問題的處理
    的頭像 發(fā)表于 03-15 17:14 ?952次閱讀

    從Excel到Python數(shù)據(jù)分析進(jìn)階指南資源下載

    pandas庫用于數(shù)據(jù)處理,我們從1787頁的pandas官網(wǎng)文檔中總結(jié)出最常用的36個(gè)函數(shù),通過這些函數(shù)介紹如何通過Python完成數(shù)據(jù)生成和導(dǎo)入、數(shù)據(jù)
    發(fā)表于 04-06 09:44 ?0次下載
    從Excel到<b class='flag-5'>Python</b><b class='flag-5'>數(shù)據(jù)</b>分析進(jìn)階<b class='flag-5'>指南</b>資源下載

    硅晶片的蝕刻預(yù)處理方法包括哪些

    硅晶片的蝕刻預(yù)處理方法包括:對(duì)角度聚合的硅晶片進(jìn)行最終聚合處理,對(duì)上述最終聚合的硅晶片進(jìn)行超聲波清洗后用去離子水沖洗,對(duì)上述清洗和沖洗的硅晶片進(jìn)行SC-1
    發(fā)表于 04-13 13:35 ?1096次閱讀
    硅晶片的蝕刻<b class='flag-5'>預(yù)處理</b>方法包括哪些

    PyTorch教程之數(shù)據(jù)預(yù)處理

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程之數(shù)據(jù)預(yù)處理.pdf》資料免費(fèi)下載
    發(fā)表于 06-02 14:11 ?0次下載
    PyTorch教程之<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>預(yù)處理</b>

    每日一課 | 智慧燈桿之大數(shù)據(jù)預(yù)處理技術(shù)介紹

    2.大數(shù)據(jù)預(yù)處理技術(shù)大數(shù)據(jù)預(yù)處理技術(shù)主要完成對(duì)已接收數(shù)據(jù)的辨析、抽取、清洗等操作。(1)抽取:因
    的頭像 發(fā)表于 04-07 14:38 ?744次閱讀
    每日一課 | 智慧燈桿之大<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>預(yù)處理</b>技術(shù)介紹