1. 程式人生 > >資料預處理程式碼分享——機器學習與資料探勘

資料預處理程式碼分享——機器學習與資料探勘

資料預處理分為6步:

第1步:匯入NumPy和Pandas庫。NumPy和Pandas是每次都要匯入的庫,其中Numpy包含了數學計算函式,Pnadas是一個用於匯入和管理資料集(Data Sets)的類庫。

第2步:匯入資料集。資料集一般都是.csv格式,csv檔案以文字形式儲存資料。每一行資料是一條記錄。我們使用pandas類庫的read_csv方法讀取本地的csv檔案作為一個dataframe。然後從datafram中分別建立自變數和因變數的矩陣和向量。

第3步:處理缺失的資料。我們得到的資料很少是完整的。資料可能因為各種原因丟失,為了不降低機器學習模型的效能,需要處理資料。我們可以用整列的平均值或者中間值替換丟失的資料。我們用sklearn.preprocessing庫中的Inputer類完成這項任務。

第4步:對分類資料進行編碼。分類資料指的是含有標籤值而不是數字值得變數。取值範圍通常是固定的。例如“YES”和“NO”不能用於模型的數學計算,所以需要編碼成數字。為數顯這一功能,我們從sklearn.preprocessing庫中匯入LabelEncoder類。

第5步:拆分資料集為測試集合和訓練集合。把資料集拆分成兩個,一個是用來訓練模型的訓練集合,另一個是用來驗證模型的測試集合。兩種比例一般是80:20。我們匯入sklearn.crossvalidation庫中的train_test_split()方法。

第6步:特徵縮放。大部分模型演算法使用兩點間的歐式近距離表示,但此特徵在幅度、單位和範圍姿態問題上變化很大。在距離計算中,高幅度的特徵比低幅度特徵權重大。可用特徵標準化或Z值歸一化解決。匯入sklearn.preprocessing庫的StandardScalar類。

程式碼如下:  視訊教學QQ群    519970686

 1 Step 1: 匯入類庫
 2 
 3 import numpy as np
 4 import pandas as pd
 5 
 6 Step 2: 匯入資料集
 7 dataset = pd.read_csv('Data.csv')
 8 X = dataset.iloc[ : , :-1].values
 9 Y = dataset.iloc[ : , 3].values
10 
11 Step 3: 處理缺失的資料
12 from sklearn.preprocessing import Imputer
13 imputer = Imputer(missing_values = "NaN", strategy = "mean", axis = 0)
14 imputer = imputer.fit(X[ : , 1:3])
15 X[ : , 1:3] = imputer.transform(X[ : , 1:3])
16 
17 Step 4:編碼分類資料
18 from sklearn.preprocessing import LabelEncoder, OneHotEncoder
19 labelencoder_X = LabelEncoder()
20 X[ : , 0] = labelencoder_X.fit_transform(X[ : , 0])
21 Creating a dummy variable
22 
23 onehotencoder = OneHotEncoder(categorical_features = [0])
24 X = onehotencoder.fit_transform(X).toarray()
25 labelencoder_Y = LabelEncoder()
26 Y =  labelencoder_Y.fit_transform(Y)
27 
28 Step 5: 切分資料整合訓練資料和測試資料
29 from sklearn.cross_validation import train_test_split
30 X_train, X_test, Y_train, Y_test = train_test_split( X , Y , test_size = 0.2, random_state = 0)
31 
32 Step 6: 特徵縮放
33 from sklearn.preprocessing import StandardScaler
34 sc_X = StandardScaler()
35 X_train = sc_X.fit_transform(X_train)
36 X_test = sc_X.fit_transform(X_test)