1. 程式人生 > >100-Days-Of-ML-Code-Day 1

100-Days-Of-ML-Code-Day 1

Day1-資料預處理

Day 1

程式碼:

    # 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: 特徵縮放

也就是我們所謂的歸一化處理,為了防止某些資料過大影響機器學習的效果。