當我們蒐集到一組數據後,我們必須先針對數據內容作預先的處理,目的是讓電腦能正確的讀取數據並使用。
數據預處理第一步:將數據轉存為csv
csv檔案這是一種通用且簡單的格式,能讓各種軟體間無阻礙的傳輸資料。
因此常用的做法是先把蒐集到的數據轉成csv檔案,在python中即可快速的導入數據。
數據預處理第二步:導入標準庫
python及R語言內建許多標準函式庫,為了減輕程式編寫軟體的運行,大部份的函式庫都是尚未啟用的,因此需要導入各式各樣的標準庫。
首先會用到的是下列幾項,說明如後方註解
import numpy as np #多維數列與矩陣運算用,最常搭配matplotlib使用
import matplotlib.pyplot as plt #視覺化套件,只有一張圖的話使用全域 pyplot 很方便
import pandas as pd #數據分析用
import os #預設工作路徑,避免每次重新開啟檔案就要手動設置路徑
數據預處理第三步:導入數據集
首先先設置工作路徑,方便導入已蒐集的數據
方法1:可以以手動方式點選spyder程式介面右上角設定資料所在文件夾

方法2:直接於程式碼中寫入
os.chdir("D:你的資料文件夾位置")
設置完工作路徑後,要導入我們的資料,因此打上以下程式碼
dataset = pd.read_csv('dataname.csv')
導入的數據名稱隨後會變成dataset,之後於程式中處理皆會以dataset的方式處理而導入的檔案名稱在這邊則為dataname.csv
接著我們要選擇那些數據要留著,那些不需要,在做機器學習時,我們會將數據做各種的統計分析,但並非所有的數據都適合,或是能合理的分析數據,為了減少不必要的時間浪費,我們會把完全無關或者說我們不感興趣的數據刪除,僅留下我們要分析的數據資料。
以右邊的數據為例,我們想要預測的結果為年齡與收入影響購買意願的關係,因此不需要用到國家的數據,我們用以下的程式,X只取第1跟2列的數據當作自變數。
Y則取第3列為應變數。
X = dataset.iloc[:, [1,2]].values
Y = dataset.iloc[:, 3].values

數據預處理第三之一步:導入數據後處理遺失數據
此步驟為處理資料中的遺失數據,通常是資料缺失,或是未能蒐集到完整數據時,可以於python中做處理。
處理方式以這邊的例子為,使用各組數據的平均數。程式碼如下
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values =np.nan, strategy= 'mean')
imputer.fit(X[:, 0:1])
X[:, 1:2] = imputer.transform(X[:, 0:1])
數據預處理第四步:分類數據
當數據為字串形式時,如國家、性別、各種屬性等等的,需要轉成數字形式表示。
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values =np.nan, strategy= 'mean')
#以平均數代替遺失數據
imputer.fit(X[:, 1:3])
X[:, 1:3] = imputer.transform(X[:, 1:3])
數據預處理第五步:將數據分成訓練集跟測試集
將整理好的數據,分為訓練集以及測試集,如果數據量夠大,通常會分成8成的訓練集,2成測試集,以確保足夠的訓練數量,如果數據過少,可適度提高訓練集數據數量。程式如下:
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)
數據預處理第六步:特徵標準化
每個自變量有各自的數據特徵,如果其中一個變量特徵特別明顯,就會嚴重影響到分析的結果,因此需要將所有變量標準化。(並非每次的數據都需要特徵標準化,還是得依照我們所要解決的問題來更換成最適合的方法。)
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)
以上六步驟將視數據以及欲預測目標做調整,並不一定要遵照此規則。