100-Days-Of-ML-Code-Day 1
阿新 • • 發佈:2018-12-10
Day1-資料預處理
程式碼:
# step 1: 匯入Numpy和Pandas庫
import numpy as np
import pandas as pd
from sklearn.preprocessing import Imputer
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
from sklearn.cross_validation import train_test_split
from sklearn.preprocessing import StandardScaler
# step 2: 匯入資料集
data_set = pd.read_csv('datasets/Data.csv')
print(data_set)
X = data_set.iloc[ :, :3].values # 提取除最後一列的所有資料 前閉後開
Y = data_set.iloc[ :, 3].values # 提取最後一列的資料
# step 3: 處理缺失資料 資料中只有第一列和第二列有缺失資料
imputer = Imputer(missing_values='NaN', strategy='mean' , verbose=0)
imputer = imputer.fit(X[:, 1:3])
X[:, 1:3] = imputer.transform(X[:, 1:3])
# print(X)
# step 4: 編碼解析資料分類
labelencoder_X = LabelEncoder()
X[:, 0] = labelencoder_X.fit_transform(X[:, 0])
# print(X)
# 建立一個虛擬變數
onehotencoder = OneHotEncoder(categorical_features=[0 ])
X = onehotencoder.fit_transform(X).toarray()
labelencoder_Y = LabelEncoder()
Y = labelencoder_Y.fit_transform(Y)
# print(X)
# print(Y)
# step 5: 將資料集分為訓練集和測試集
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=0)
# step 6: 特徵縮放 歸一化處理
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.fit_transform(X_test)
step 1: 匯入庫
- Numpy:主要用來處理陣列和矩陣。
- Pandas:基於Numpy,主要用來解決資料分析任務。
step 2: 匯入資料
pandas.read_csv(): 讀取csv檔案。
常見的pandas讀寫檔案的操作方法:
檔案格式 | 讀取方法 | 寫入方法 |
---|---|---|
CSV | read_csv | to_csv |
JSON | read_json | to_json |
HTML | read_html | to_html |
EXCEL | read_excel | to_excel |
step 3: 處理缺失資料
- sklearn:機器學習庫,提供了大量優質的資料集,能夠實現出不同的模型。
- sklearn.processing:預處理類。
- sklearn.processing.Imputer:類,能夠完成資料中缺失值的插補。
程式碼解釋:
imputer = Imputer(missing_values='NaN', strategy='mean', verbose=0)
imputer = imputer.fit(X[:, 1:3])
X[:, 1:3] = imputer.transform(X[:, 1:3])
print(X)
上述程式碼實際上是用陣列X去訓練一個Imputer類,然後再用訓練好的類的物件去處理X中的缺失值,缺失值的處理方式是使用X中的均值來代替NaN,axis=0代表按列進行。這是對於X陣列本身來處理,也可以使用X來訓練,去處理Y陣列。
step 4: 編碼解析分類資料
分類資料指的是含有標籤值而不是數字值的變數,取值範圍通常是固定的,如:”Yes“,”No“不能用語模型的數學計算,所以需要解析成數字。
sklearn.preprocessing.LabelEncoder(): 標準化標籤,將標籤值統一轉化為range範圍內。
在資料中,我們可以看出X中的Country和Y中的Purchased都是類別字串,對於機器學習來說無法處理,所以要進行類別編碼,利用了LabelEncoder和OneHotEncoder進行編碼。
step 5: 將資料集分為測試集和訓練集
step 6: 特徵縮放
也就是我們所謂的歸一化處理,為了防止某些資料過大影響機器學習的效果。