ML Day3多元線性迴歸
阿新 • • 發佈:2019-01-11
機器學習100天,每天進步一點點。跟著GitHub開始學習!
英文專案地址https://github.com/Avik-Jain/100-Days-Of-ML-Code
中文專案地址https://github.com/MLEveryday/100-Days-Of-ML-Code
多元線性迴歸用一個線性方程來適配觀測資料,這個線性方程是在兩個以上(包括兩個)的特徵和響應之間構建的一個關係。
虛(擬)變數:在多元迴歸模型中,當遇到資料集是非數值資料型別時,使用分類資料是有效的方法。分類資料,是指反映(事物)類別的資料,是離散資料,其數值個數(分類屬性)有限(但可能很多)且值之間無序。比如按性別分為男、女兩類。在一個迴歸模型中,這些分類值用虛變量表示,取1或0這樣的值,來表示肯定或否定型別。
虛擬變數陷阱:指兩個以上(包含兩個)變數之間高度相關的情形,即存在一個能夠被其他變數預測出的變數。解決虛擬變數陷阱的方法是,類別變數減去一。
y=b0 + b1x1 +b2x2 +b3D1
多元線性迴歸處理的步驟為:
1 資料預處理
匯入相關庫、匯入資料集、檢查缺失資料、資料分類、編輯虛擬變數並注意避免虛擬變數陷阱、特徵縮放
2 在訓練集上訓練模型
與簡單線性迴歸處理相同。使用sklearn.linear_model庫的LinearRegression類,呼叫fit方法對資料集進行訓練。
3 預測結果
用predict方法在測試集上進行測試,並觀察結果。
4 評估結果
使用sklearn中r2_score評估結果。模型越好,r2趨於1。
程式碼:
# Importing the libraries import pandas as pd #用於匯入和管理資料集 import numpy as np #包含數學計算函式 # Importing the dataset dataset = pd.read_csv('../datasets/50_Startups.csv') X = dataset.iloc[ : , :-1].values #iloc是取矩陣的某行某列 Y = dataset.iloc[ : , 4 ].values # Encoding Categorical data from sklearn.preprocessing import LabelEncoder, OneHotEncoder labelencoder = LabelEncoder() X[: , 3] = labelencoder.fit_transform(X[ : , 3]) onehotencoder = OneHotEncoder(categorical_features = [3]) #第3列進行獨熱編碼 X = onehotencoder.fit_transform(X).toarray() #不加toarray()的話,輸出稀疏的儲存格式 # Avoiding Dummy Variable Trap 避免虛擬變數陷阱 X = X[: , 1:] # Splitting 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 = 0) # Fitting Multiple Linear Regression to the Training set from sklearn.linear_model import LinearRegression regressor = LinearRegression() regressor.fit(X_train, Y_train) # Predicting the Test set results y_pred = regressor.predict(X_test) # regression evaluation from sklearn.metrics import r2_score #r2決定係數(擬合優度),模型越好:r2趨於1 print(r2_score(Y_test,y_pred))
結果:0.9347068473282446