做者:Afroz Chakure翻譯:瘋狂的技術宅python
原文:https://towardsdatascience.co...git
未經容許嚴禁轉載github
機器學習的核心是處理數據。你的機器學習工具應該與數據的質量同樣好。本文涉及清理數據的各個步驟。你的數據須要通過幾個步驟才能用於預測。算法
那麼讓咱們逐一學習這些步驟。dom
你先須要下載此數據集:Data.csv機器學習
每次咱們製做新模型時,都會要求導入 Numpy 和 Pandas。 Numpy 是一個包含數學函數的庫,用於科學計算,而 Pandas 用於導入和管理數據集。函數
import pandas as pd import numpy as np
在這裏咱們導入 pandas 和 Numpy 庫並分別命名名 「pd」 和 「np」。工具
數據集以 .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
咱們獲得的數據不多是同質的。有時數據可能會丟失,因此須要對其進行處理,以避免下降機器學習模型的性能。
咱們須要用整列的 Mean 或 Median 替換缺失的數據。爲此,咱們將使用 sklearn.preprocessing
庫,其中包含一個名爲 Imputer
的類,它將幫助咱們處理丟失的數據。
from sklearn.preprocessing import Imputer imputer = Imputer(missing_values = "NaN", strategy = "mean", axis = 0)
咱們的對象名稱是 imputer。 Imputer
類能夠採用以下參數:
missing_values
都將被估算。咱們能夠給它一個整數或 NaN
來查找缺失值。如今將 imputer
對象與咱們的數據相匹配。
imputer = imputer.fit(X[:, 1:3])
接着用 transform
方法將缺失值替換爲列的平均值。
X[:, 1:3] = imputer.transform(X[:, 1:3])
任何非定量的變量都是分類的。例如頭髮顏色、性別、研究領域、大學就業、政治派別、疾病感染情況等。
咱們不能在模型的數學方程中使用「男性」和「女性」等值,所以須要將這些變量編碼爲數字。
爲此,咱們從 sklearn.preprocessing
庫導入 LabelEncoder
類,並建立 LabelEncoder
類的對象labelencoder_X
。以後在分類特徵上使用 fit_transform
方法。
在編碼以後,有必要區分同一列中的變量,爲此咱們將使用 sklearn.preprocessing
庫中的 OneHotEncoder
類。
獨熱編碼將分類特徵轉換爲更適合分類和迴歸算法的格式。
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)
如今咱們將數據分紅兩組,一組用於訓練模型,稱爲訓練集,另外一組用於測試模型的性能,稱爲測試集。它們的比例一般是 80/20。爲此,咱們導入 sklearn.model_selection
庫的 train_test_split
方法。
from sklearn.model_selection import train_test_split
如今創建訓練集和測試集,咱們將建立 4 套 ——
咱們將爲它們分配 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)
大多數機器學習算法在其計算中使用兩個數據點之間的歐幾里德距離。所以,高幅度特徵在距離計算中的權重將比低幅度的特徵更重。爲了不這種功能,使用標準化或 Z-score 標準化。這是經過使用 StandardScaler
類 sklearn.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)
到此爲止,你已經學習了數據預處理所涉及的基本步驟。
如今,你能夠嘗試在某些實際數據集上應用這些預處理技術。