前情回顧
[次日100天搞定機器學習|Day2簡單線性迴歸分析][1],咱們學習了簡單線性迴歸分析,這個模型很是簡單,很容易理解。實現方式是sklearn中的LinearRegression,咱們也學習了LinearRegression的四個參數,fit_intercept、normalize、copy_X、n_jobs。而後介紹了LinearRegression的幾個用法,fit(X,y)、predict(X)、score(X,y)。最後學習了matplotlib.pyplot將訓練集結果和測試集結果可視化。python
多元線性迴歸分析與簡單線性迴歸很類似,可是要複雜一些了(影響因素由一個變成多個)。它有幾個假設前提須要注意,git
①線性,自變量和因變量之間應該是線性的github
②同方差,偏差項方差恆定dom
③殘差負荷正態分佈機器學習
④無多重共線性性能
出現了一些新的名詞,殘差(殘差是指實際觀察值與迴歸估計值的差,【計量經濟學名詞】2絕對殘差)、多重共線性(解釋變量之間因爲存在精確相關關係或高度相關關係而使模型估計失真或難以估計準確)。學習
對R感興趣的同窗能夠看一下我以前分享的幾篇文章測試
[R多元線性迴歸容易忽視的幾個問題(1)多重共線性][2]編碼
[R多元線性迴歸容易忽視的幾個問題(2)多重共線性的克服][3]3d
[R多元線性迴歸容易忽視的幾個問題(3)異方差性][4]
[R多元線性迴歸容易忽視的幾個問題(4)異方差性的克服][5]
多元線性迴歸中還有虛擬變量和虛擬變量陷阱的概念
虛擬變量:分類數據,離散,數值有限且無序,好比性別能夠分爲男和女,迴歸模型中能夠用虛擬變量表示,1表示男,0表示女。
虛擬變量陷阱:兩個或多個變量高度相關,即一個變量一個變量能夠由另外一個預測得出。直觀地說,有一個重複的類別:若是咱們放棄了男性類別,則它在女性類別中被定義爲零(女性值爲零表示男性,反之亦然)。 虛擬變量陷阱的解決方案是刪除一個分類變量 —— 若是有多個類別,則在模型中使用m-1。 遺漏的值能夠被認爲是參考值。
須要注意的是:變量並不是越多越好,過多變量尤爲是對輸出沒有影響的變量,可能致使模型預測精確度下降,因此要選擇合適的變量,主要方法有三種,①向前選擇(逐次加使RSS最小的自變量)②向後選擇(逐次扔掉p值最大的變量)③雙向選擇
模型部分就是這樣,下面開始python實現。
在開始操做以前,咱們仍是先觀察一下數據,一共50組數據,有一些缺失值,也有虛擬變量(state:New York 、California、Florida)。
導入庫
import pandas as pd import numpy as np
導入數據集
dataset = pd.read_csv('50_Startups.csv') X = dataset.iloc[ : , :-1].values Y = dataset.iloc[ : , 4 ].values
將類別數據數字化
from sklearn.preprocessing import LabelEncoder, OneHotEncoder labelencoder = LabelEncoder() X[: , 3] = labelencoder.fit_transform(X[ : , 3]) onehotencoder = OneHotEncoder(categorical_features = [3]) X = onehotencoder.fit_transform(X).toarray()
OneHotEncoderone-hot編碼是一種對離散特徵值的編碼方式,在LR模型中經常使用到,用於給線性模型增長非線性能力。
躲避虛擬變量陷阱
X = X[: , 1:]
拆分數據集爲訓練集和測試集
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)
第2步: 在訓練集上訓練多元線性迴歸模型
from sklearn.linear_model import LinearRegression regressor = LinearRegression() regressor.fit(X_train, Y_train)
Step 3: 在測試集上預測結果
y_pred = regressor.predict(X_test)
我的感受做爲入門已經足夠。可是多元線性迴歸分析是創建在上面說的四個假設前提上的(①線性,自變量和因變量之間應該是線性的②同方差,偏差項方差恆定③殘差負荷正態分佈④無多重共線性),因此初步獲得一個線性迴歸模型,並不必定能夠直接拿來使用,還須要進行驗證和診斷。