天天看點

【機器學習個人筆記】part1——用sklearn實作資料預處理1.導入資料處理标準庫2.導入資料集3.處理預設資料4.處理分類資料,虛拟編碼5.劃分訓練集和測試集6.特征縮放完整代碼

【機器學習個人筆記】part1——用sklearn實作資料預處理

  • 1.導入資料處理标準庫
  • 2.導入資料集
  • 3.處理預設資料
  • 4.處理分類資料,虛拟編碼
  • 5.劃分訓練集和測試集
  • 6.特征縮放
  • [完整代碼](https://github.com/carrycarry5/ml-personal-notes)
【機器學習個人筆記】part1——用sklearn實作資料預處理1.導入資料處理标準庫2.導入資料集3.處理預設資料4.處理分類資料,虛拟編碼5.劃分訓練集和測試集6.特征縮放完整代碼

1.導入資料處理标準庫

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
           

2.導入資料集

dataset = pd.read_csv('../Data.csv')
x1 = dataset.iloc[:, :-1]    # dataframe格式
x = dataset.iloc[:, :-1].values   # numpy格式  自變量應該是個矩陣
y = dataset.iloc[:,-1:].values    # 因變量應該是個向量
           
原始資料集:
【機器學習個人筆記】part1——用sklearn實作資料預處理1.導入資料處理标準庫2.導入資料集3.處理預設資料4.處理分類資料,虛拟編碼5.劃分訓練集和測試集6.特征縮放完整代碼
x:
【機器學習個人筆記】part1——用sklearn實作資料預處理1.導入資料處理标準庫2.導入資料集3.處理預設資料4.處理分類資料,虛拟編碼5.劃分訓練集和測試集6.特征縮放完整代碼
y:
【機器學習個人筆記】part1——用sklearn實作資料預處理1.導入資料處理标準庫2.導入資料集3.處理預設資料4.處理分類資料,虛拟編碼5.劃分訓練集和測試集6.特征縮放完整代碼

3.處理預設資料

遇到缺失資料時,我們首先想到的是要把這條記錄删掉,但這條記錄可能包含了一些重要的資訊, 是以應該采取别的方法。例如,用整列的平均值代替缺失資料。
from sklearn.preprocessing import Imputer  #該類專門用于處理缺失對象
imputer = Imputer(missing_values= 'NaN',strategy='mean',axis=0) #用均值來填補預設值,axis=0代表對列操作
imputer.fit(x[:,1:3])  # 用x去拟合
x[:,1:3] = imputer.transform(x[:,1:3])  
           
處理後的x:
【機器學習個人筆記】part1——用sklearn實作資料預處理1.導入資料處理标準庫2.導入資料集3.處理預設資料4.處理分類資料,虛拟編碼5.劃分訓練集和測試集6.特征縮放完整代碼
Imputer類中的strategy的可選值共有:mean(均值),median(中位數),most_frequent(衆數)

4.處理分類資料,虛拟編碼

某些标簽,比如國家,不能直覺的看出其差異,将其轉換為數字更好觀察

但這些國家并沒有數值上的差異,它們隻是不一樣,這種排序是沒有意義的,如何解決?

——虛拟編碼

【機器學習個人筆記】part1——用sklearn實作資料預處理1.導入資料處理标準庫2.導入資料集3.處理預設資料4.處理分類資料,虛拟編碼5.劃分訓練集和測試集6.特征縮放完整代碼
# encoding categorical data  # 處理分類資料
from sklearn.preprocessing import LabelEncoder,OneHotEncoder # 該類用于将label标準化
label_encoder_x = LabelEncoder()  # 轉換'國家'
x[:,0] = label_encoder_x.fit_transform(x[:,0]) # 拟合、轉換
label_encoder_y = LabelEncoder() # 轉換'是否購買'
y = label_encoder_y.fit_transform(y[:,0])

# 虛拟編碼
onehotencoder = OneHotEncoder(categorical_features = [0])
x = onehotencoder.fit_transform(x).toarray()
           
處理後的x資料集:
【機器學習個人筆記】part1——用sklearn實作資料預處理1.導入資料處理标準庫2.導入資料集3.處理預設資料4.處理分類資料,虛拟編碼5.劃分訓練集和測試集6.特征縮放完整代碼
其中前3列是‘國家’虛拟編碼後的結果

5.劃分訓練集和測試集

# sptting 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=42)
           
【機器學習個人筆記】part1——用sklearn實作資料預處理1.導入資料處理标準庫2.導入資料集3.處理預設資料4.處理分類資料,虛拟編碼5.劃分訓練集和測試集6.特征縮放完整代碼
以1:4的比例将資料集切割成測試集合訓練集

6.特征縮放

何為特征縮放:https://blog.csdn.net/xlinsist/article/details/51212348
# Feature Scaling
from sklearn.preprocessing import StandardScaler
sc_x = StandardScaler()
x_train[:,-2:] = sc_x.fit_transform(x_train[:,-2:])
x_test[:,-2:] = sc_x.transform(x_test[:,-2:]) # 之前sc_x已經拟合過了,是以不用再拟合了
           
縮放後的資料
【機器學習個人筆記】part1——用sklearn實作資料預處理1.導入資料處理标準庫2.導入資料集3.處理預設資料4.處理分類資料,虛拟編碼5.劃分訓練集和測試集6.特征縮放完整代碼

完整代碼

  • 資料預處理的幾個基本步驟就介紹到這裡,希望能夠幫助到大家。

繼續閱讀