[機器學習筆記]數據預處理
原筆記位置:
https://www.notion.so/d10d99b091844074bf8acd41a8c83dc6
前言
在每一個機器學習的模型裡面,我們都有“自變量”、“應變量”而我們將會通過自變量來預測應變量的結果
在本篇文章中我們將通過下面的資料來預測這些顧客是否會購買產品
不過在進行機器學習之前,我們需要先對數據進行預處理,
以幫助我們的機器學習有更好的資料
數據預處理模板
ㄧ、導入標準庫
import numpy as np
import matplotlib.pyplot as plt #畫出圖型
import pandas as pd #資料處理
Python :
Python 是一個高階語言也是一種膠水語言,可以透過整合其他低階語言同時擁有效能和高效率的開發)
Numpy :
Numpy 是 Python 的一個重要模組,主要用於資料處理上。Numpy 底層以 C 和 Fortran 語言實作,所以能快速操作多重維度的陣列。當 Python 處理龐大資料時,其原生 list 效能表現並不理想(但可以動態存異質資料),而 Numpy 具備平行處理的能力,可以將操作動作一次套用在大型陣列上。
Matplotlib:
主要用於資料視覺化上。一般來說使用 Matplotlib 有兩種主要方式:直接和 Matplotlib 的全域 pyplot 模組互動操作,第二種則是物件導向形式的操作方式。若是只有一張圖的話使用全域 pyplot 很方便,若是有多張圖的話用物件導向操作。一般來說 Matplotlib 預設值並不理想,但它的優點在於很容易在上面外包一層提供更好的預設值或是自己修改預設值。
Pandas :
Pandas 是 python 的一個數據分析 lib,2009 年底開源出來,提供高效能、簡易使用的資料格式(Data Frame)讓使用者可以快速操作及分析資料
二、導入數據集 :
import pandas as pd #這邊只是提醒大家記得要import pandas
# Importing the dataset
dataset = pd.read_csv('./Data.csv')
X = dataset.iloc[:, :-1 ].values
Y = dataset.iloc[:, 3].values
讀取CSV格式
1.CSV檔:逗號分隔值,其檔案以純文字形式儲存表格資料。純文字意味著該檔案是一個字元序列,不含必須像二進位數字那樣被解讀的資料。
2.使用Pandas lib 來讀取檔案格式
選取特定列 —“pandas的iloc”
「:」表示全部行/列
ex : 「:-1」表示不取最後一行/列
三、處理缺失數據:
我們有時候會遇到資料裡面缺少一些一些數據的情況,當然最直觀的做法是直接砍掉整行,但這麼做可能會使我們錯過重要的數據,所以這裡我們對缺失數據的處理方式是填入所有數據的平均值,既可以避面錯失重要資料又可以使其不會影響原本數據
from sklearn.preprocessing import Imputer
#Imputer : 專門處理數據缺失的類別
#這邊可以comment+i來查看函式的解說 imputer = Imputer(missing_values = 'NaN', strategy = 'mean',axis=0) #1:3 = 1~2
imputer = imputer.fit(X[:, 1:3])
X[:, 1:3] = imputer.transform(X[:, 1:3])
分段解說:
from sklearn.preprocessing import Imputer
sklearn.preprocessing : 是專門用來做數據預處理的library
Imputer : 是專門用來做數據缺失的類
Imputer(missing_values = 'NaN', strategy = 'mean',axis=0)
imputer.fit(X[:, 1:3])
imputer.transform(X[:, 1:3])
四、分類數據
為什麼要分類數據?
因為在做機器學習時我們必須要有一個方法來標示每一類的數據
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)
五、將數據分成測試集、訓練集合
#splitting the dataset into the Training set and Test set #什麼是數據集、測試集,我們又是為了什麼要把數據分成兩個部分呢? #測試集:用來檢驗機器學習成果的數據 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, random_state = 0)
六、特徵縮放:
標準化
1.mean(x) : 平均值
2.Standard Deviation : 標準差
p.s. 最常使用作為測量一組數值的離散程度之用。
正歸化
min(x) : 最小值
max(x) : 最大值