用Python實現數據預處理

做者:Afroz Chakure

翻譯:瘋狂的技術宅python

原文:https://towardsdatascience.co...git

未經容許嚴禁轉載github

機器學習的核心是處理數據。你的機器學習工具應該與數據的質量同樣好。本文涉及清理數據的各個步驟。你的數據須要通過幾個步驟才能用於預測。算法

clipboard.png

數據預處理涉及的步驟:

  1. 導入所需的庫
  2. 導入數據集
  3. 處理缺失的數據。
  4. 編碼分類數據。
  5. 將數據集拆分爲測試集和訓練集。
  6. 特徵縮放。

那麼讓咱們逐一學習這些步驟。dom

步驟1:導入所需的庫

你先須要下載此數據集:Data.csv機器學習

每次咱們製做新模型時,都會要求導入 Numpy 和 Pandas。 Numpy 是一個包含數學函數的庫,用於科學計算,而 Pandas 用於導入和管理數據集。函數

import pandas as pd
import numpy as np

在這裏咱們導入 pandas 和 Numpy 庫並分別命名名 「pd」 和 「np」。工具

第2步:導入數據集

數據集以 .csv 格式提供。 CSV 文件以純文本格式存儲表格數據。該文件的每一行都是一個數據記錄。咱們使用 pandas 庫的 read_csv 方法將本地 CSV 文件讀取爲數據幀(dataframe)性能

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

在仔細檢查數據集以後,咱們將在數據集(X)中建立一個特徵矩陣,並建立一個依賴向量(Y)及其各自的觀察結果。咱們用 pandas 的 iloc (用於修復索引以進行選擇)讀取列,它包含兩個參數 — [行選擇,列選擇]。學習

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

步驟3:處理缺失的數據

clipboard.png

咱們獲得的數據不多是同質的。有時數據可能會丟失,因此須要對其進行處理,以避免下降機器學習模型的性能。

咱們須要用整列的 Mean 或 Median 替換缺失的數據。爲此,咱們將使用 sklearn.preprocessing 庫,其中包含一個名爲 Imputer 的類,它將幫助咱們處理丟失的數據。

from sklearn.preprocessing import Imputer
imputer = Imputer(missing_values = "NaN", strategy = "mean", axis = 0)

咱們的對象名稱是 imputerImputer 類能夠採用以下參數:

  1. missing_values : 它是缺失值的佔位符。全部出現的 missing_values 都將被估算。咱們能夠給它一個整數或 NaN 來查找缺失值。
  2. strategy : 這是插補策略 —— 若是是"mean",則使用沿軸的平均值(列)替換缺失值。其餘策略包括"median"(中位數)和"most_frequent"(最多見)。
  3. axis : 能夠指定 0 或 1,0 沿列插入,1沿行插入。

如今將 imputer 對象與咱們的數據相匹配。

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

接着用 transform 方法將缺失值替換爲列的平均值。

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

步驟4:編碼分類數據

clipboard.png

任何非定量的變量都是分類的。例如頭髮顏色、性別、研究領域、大學就業、政治派別、疾病感染情況等。

可是爲何要編碼?

咱們不能在模型的數學方程中使用「男性」和「女性」等值,所以須要將這些變量編碼爲數字。

爲此,咱們從 sklearn.preprocessing 庫導入 LabelEncoder 類,並建立 LabelEncoder 類的對象labelencoder_X。以後在分類特徵上使用 fit_transform 方法。

在編碼以後,有必要區分同一列中的變量,爲此咱們將使用 sklearn.preprocessing 庫中的 OneHotEncoder 類。

獨熱編碼(One-Hot Encoding)

獨熱編碼將分類特徵轉換爲更適合分類和迴歸算法的格式。

from sklearn.preprocessing import LabelEncoder, OneHotEncoder

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

onehotencoder = OneHotEncoder(categorical_features = [0])
X = onehotencoder.fit_transform(X).toarray()

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

步驟5:將數據集拆分爲訓練集和測試集

如今咱們將數據分紅兩組,一組用於訓練模型,稱爲訓練集,另外一組用於測試模型的性能,稱爲測試集。它們的比例一般是 80/20。爲此,咱們導入 sklearn.model_selection 庫的 train_test_split 方法。

from sklearn.model_selection import train_test_split

如今創建訓練集和測試集,咱們將建立 4 套 ——

  1. X_train(訓練部分特徵矩陣),
  2. X_test (測試特徵矩陣的一部分),
  3. Y_train (訓練與 X 集相關的因變量的一部分,所以也是相同的索引),
  4. Y_test(測試與 X 測試集相關的因變量的一部分,所以也測試相同的索引)。

咱們將爲它們分配 test_train_split,它接受參數 arrays(X和Y)test_size(指定分割數據集的比率)。

X_train, X_test, Y_train, Y_test = train_test_split( X , Y , test_size = 0.2, random_state = 0)

第6步:特徵縮放

大多數機器學習算法在其計算中使用兩個數據點之間的歐幾里德距離。所以,高幅度特徵在距離計算中的權重將比低幅度的特徵更重。爲了不這種功能,使用標準化或 Z-score 標準化。這是經過使用 StandardScalersklearn.preprocessing 來完成的。

from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()

此外,咱們將轉換 X_test 集合,同時須要適應並轉換 X_train 集合。

轉換函數將全部數據轉換爲相同的標準化比例。

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

到此爲止,你已經學習了數據預處理所涉及的基本步驟。

如今,你能夠嘗試在某些實際數據集上應用這些預處理技術。


歡迎掃碼關注公衆號:硬核智能

clipboard.png

相關文章
相關標籤/搜索