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

python進(jìn)行數(shù)據(jù)預(yù)處理的4個重要步驟

 更新時間:2023年06月21日 11:08:32   作者:程序員學(xué)長  
在數(shù)據(jù)科學(xué)項目中,數(shù)據(jù)預(yù)處理是最重要的事情之一,本文詳細(xì)給大家介紹python進(jìn)行數(shù)據(jù)預(yù)處理的4個重要步驟:拆分訓(xùn)練集和測試集,處理缺失值,處理分類特征和進(jìn)行標(biāo)準(zhǔn)化處理,需要的朋友可以參考下

如果有正確的數(shù)據(jù)預(yù)處理和特征工程,該模型更有可能與數(shù)據(jù)未得到很好預(yù)處理的模型相比,產(chǎn)生更好的結(jié)果。

數(shù)據(jù)預(yù)處理主要有4個重要步驟。

  • 拆分訓(xùn)練集和測試集
  • 處理缺失值
  • 處理分類特征
  • 進(jìn)行標(biāo)準(zhǔn)化處理

拆分訓(xùn)練集和測試集

訓(xùn)練集和測試集拆分是機(jī)器學(xué)習(xí)中的重要步驟之一。

這非常重要,因為你的模型需要在部署之前進(jìn)行評估。

訓(xùn)練集和測試集拆分背后的主要思想是將原始數(shù)據(jù)集轉(zhuǎn)換為兩部分

  • 訓(xùn)練集
  • 測試集

其中訓(xùn)練集由訓(xùn)練數(shù)據(jù)和訓(xùn)練標(biāo)簽組成,測試集由測試數(shù)據(jù)和測試標(biāo)簽組成。

最簡單的方法是使用 scikit-learn 的 一個內(nèi)置函數(shù) train_test_split。

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2)

在這里,我們在 train_test_split 中傳入了 X 和 y 作為參數(shù) ,它將 X 和 y 進(jìn)行拆分,其中訓(xùn)練集占 80%,測試集占 20% 。

處理缺失值

你可能聽說過一個著名的機(jī)器學(xué)習(xí)短語,它是

Garbage in Garbage out

如果你的數(shù)據(jù)集充滿了缺失值,那么你的模型效果也不好。

因此,處理此類缺失值很重要。

讓我們用一個虛擬數(shù)據(jù)集來看看我們?nèi)绾谓鉀Q這個問題。

首先查看一下數(shù)據(jù)集中的缺失值。

df.isna().sum()

我們可以看到數(shù)據(jù)集中有缺失值。

填充缺失值的一種方法是用該列的平均值填充。

例如,我們可以用該列所有學(xué)生的平均值來填充 Final 列的缺失值。

為此,我們可以使用 sklearn.impute 中的 SimpleImputer 。

from sklearn.impute import SimpleImputer
imputer = SimpleImputer(fill_value=np.nan, startegy='mean')
X = imputer.fit_transform(df)

這將使用 該列的 平均值 填充數(shù)據(jù)框 df 中的所有缺失值 。

可以使用 fit_transform 函數(shù)來做到這一點。

X = pd.DataFrame(X, columns=df.columns)
print(X)

現(xiàn)在,可以看到所有缺失值都用均值進(jìn)行了填充

X.isna().sum()

我們也可以在 SimpleImputer 中使用 mean、 meadian、 mode 等 。

如果 缺失值的行數(shù)較少,或者我們的數(shù)據(jù)不建議填充缺失值,那么可以在 pandas 中使用 dropna 刪除缺失的行。

dropedDf = df.dropna()

在這里,我們刪除了數(shù)據(jù)框中的所有空行并將其存儲在另一個數(shù)據(jù)框中。

dropedD.isna().sum()

處理分類特征

我們可以通過將它們轉(zhuǎn)換為整數(shù)來處理分類特征。有兩種常見的方法可以做到這一點。

  • Label Encoding
  • One Hot Encoding

在 Label Encoder中,將分類值轉(zhuǎn)換為數(shù)字標(biāo)簽。假設(shè)這是我們的數(shù)據(jù)集

在 Country 列上使用 Label Encoding 會將 India 轉(zhuǎn)換為 1,將 USA 轉(zhuǎn)換為 2,將 China 轉(zhuǎn)換為 0。

這種技術(shù)有一個缺點,即由于 USA 的標(biāo)簽高,它給予 USA 最高優(yōu)先級,而 China 的優(yōu)先級最低,標(biāo)簽為 0。

from sklearn.preprocessing import LabelEncoder
l1 = LabelEncoder()
l1.fit(catDf['Country'])
catDf.Country = l1.transform(catDf.Country)
print(catDf)

如代碼所示,我們實例化了一個 LabelEncoder 對象,然后使用 fit 方法將其應(yīng)用到分類列上,然后使用 transform 方法進(jìn)行轉(zhuǎn)換。

OneHotEncoder 中 ,我們?yōu)槊總€唯一的分類值創(chuàng)建一個新列。

下面通過一個例子來了解一下。

我們將添加另一個分類列,即 “Continent”。

catDf['Continent'] = ['Asia', 'North America', 'Asia']

現(xiàn)在因為我們有 2 個分類列,它們是 [['Country', 'Continent']],我們可以對它們進(jìn)行獨熱編碼。

有兩種方法可以做到這一點。

1.DataFrame.get_dummies

這是一種非常常見的方法,我們使用 pandas 內(nèi)置函數(shù) get_dummies 將數(shù)據(jù)幀中的分類值轉(zhuǎn)換為獨熱編碼。

pd.get_dummies(data=catDf)

這將 返回 一個數(shù)據(jù)幀。

在這里我們可以看到它已經(jīng)將 Country 列的唯一值轉(zhuǎn)換為 3 個不同的列,分別是 Country_China、Country_India 和 Country_USA。同樣,Continent 列的 2 個唯一值已轉(zhuǎn)換為 2 個不同的列,分別命名為 Continent_Asia 和 Continent_North America。

2.OneHotEncoder

使用 scikit-learn 中的 OneHotEncoder 也是一種常見的做法。

它提供了更多的靈活性和更多的選擇,但使用起來有點困難。

讓我們看看如何為我們的數(shù)據(jù)集做這件事。

from sklearn.preprocessing import OneHotEncoder
oh = OneHotEncoder()
s1 = pd.DataFrame(oh.fit_transform(catDf.iloc[:, [0,3]]))
catDf = pd.concat([catDf, s1], axis=1)

在這里,我們已經(jīng)初始化了 OneHotEncoder 對象,并在數(shù)據(jù)框中對我們想要的列(列號 0 和列號 3)上使用了它的 fit_transform方法。

fit_transform 的返回類型 是 numpy.ndarray ,所以我們通過pd.DataFrame 將其轉(zhuǎn)換為數(shù)據(jù)框 ,并存儲在一個變量中。

然后,為了將它加入我們的原始數(shù)據(jù)幀,可以使用 pd.concat 連接 2 個不同數(shù)據(jù)幀。

你可以看到,與 pd.get_dummies 相比,它的可讀性并不清晰

但是如果你比較使用 pd.get_dummies 和 OneHotEncoder 獲得的最后 5 列,它們都是相等的。

標(biāo)準(zhǔn)化數(shù)據(jù)集

某些實驗證明,與未標(biāo)準(zhǔn)化的數(shù)據(jù)集相比,機(jī)器學(xué)習(xí)和深度學(xué)習(xí)模型在標(biāo)準(zhǔn)化數(shù)據(jù)集上的表現(xiàn)更好。

有幾種方法可以做到這一點。我將討論標(biāo)準(zhǔn)化數(shù)據(jù)集的 2 種常用方法。

1、Standard Scaler

使用這種技術(shù),可以將數(shù)據(jù)集轉(zhuǎn)化為均值為 0,標(biāo)準(zhǔn)差為 1。

from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
catDf.iloc[:,1:-1] = ss.fit_transform(catDf.iloc[:,1:-1])
print(catDf)

2、Normalization

正則化是將 **每個樣本縮放到單位范數(shù)(每個樣本的范數(shù)為1)**的過程。

如果你計劃使用二次型(點積)或任何其他核方法來計算兩個樣本之間的相似性,則此過程會很有用。

Normalization 主要思想是對每個樣本計算其p-范數(shù),然后對該樣本中每個元素除以該范數(shù),這樣處理的結(jié)果是使得每個處理后樣本的p-范數(shù)(l1-norm,l2-norm)等于1。

使用過程非常簡單,與 StandaradScaler 類似。

from sklearn.preprocessing import Normalizer
norm = Normalizer()
catDf.iloc[:,1:-1] = norm.fit_transform(catDf.iloc[:,1:-1])
catDf

以上就是python進(jìn)行數(shù)據(jù)預(yù)處理的4個重要步驟的詳細(xì)內(nèi)容,更多關(guān)于python 數(shù)據(jù)預(yù)處理的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • django緩存配置的幾種方法詳解

    django緩存配置的幾種方法詳解

    緩存對各位學(xué)習(xí)或者使用django的朋友們來說應(yīng)該都不陌生,下面這篇文章主要給大家介紹了關(guān)于django緩存配置的幾種方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-07-07
  • Python第三方庫jieba庫與中文分詞全面詳解

    Python第三方庫jieba庫與中文分詞全面詳解

    jieba庫是一款優(yōu)秀的Python第三方中文分詞庫,jieba支持三種分詞模式:精確模式、全模式和搜索引擎模式,下面這篇文章主要給大家介紹了關(guān)于Python第三方庫jieba庫與中文分詞的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • python 巧用正則尋找字符串中的特定字符的位置方法

    python 巧用正則尋找字符串中的特定字符的位置方法

    下面小編就為大家分享一篇python 巧用正則尋找字符串中的特定字符的位置方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • TensorFlow實現(xiàn)MLP多層感知機(jī)模型

    TensorFlow實現(xiàn)MLP多層感知機(jī)模型

    這篇文章主要為大家詳細(xì)介紹了TensorFlow實現(xiàn)MLP多層感知機(jī)模型,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Pytorch 之修改Tensor部分值方式

    Pytorch 之修改Tensor部分值方式

    今天小編就為大家分享一篇Pytorch 之修改Tensor部分值方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python中numpy矩陣的零填充的示例代碼

    python中numpy矩陣的零填充的示例代碼

    本文主要介紹了python中numpy矩陣的零填充的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • python圖像處理之反色實現(xiàn)方法

    python圖像處理之反色實現(xiàn)方法

    這篇文章主要介紹了python圖像處理之反色實現(xiàn)方法,涉及Python結(jié)合OpenCV與numpy操作圖片的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • 利用numpy+matplotlib繪圖的基本操作教程

    利用numpy+matplotlib繪圖的基本操作教程

    這篇文章主要給大家介紹了利用numpy+matplotlib繪圖的基本操作,文中介紹的非常詳細(xì),對大家學(xué)習(xí)matplotlib繪圖具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-05-05
  • Python直接使用plot()函數(shù)畫圖的方法實例

    Python直接使用plot()函數(shù)畫圖的方法實例

    Python非常簡單而又非常強大,它的功能之一就是畫出漂亮的圖表,實現(xiàn)數(shù)據(jù)的可視化,下面這篇文章主要給大家介紹了關(guān)于Python直接使用plot()函數(shù)畫圖的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • 使用Pytorch實現(xiàn)two-head(多輸出)模型的操作

    使用Pytorch實現(xiàn)two-head(多輸出)模型的操作

    這篇文章主要介紹了使用Pytorch實現(xiàn)two-head(多輸出)模型的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05

最新評論