100天搞定機器學習 Day3多元線性回歸

2021-09-25 02:40:09 字數 2929 閱讀 1346

前情回顧

[第二天100天搞定機器學習|day2簡單線性回歸分析][1],我們學習了簡單線性回歸分析,這個模型非常簡單,很容易理解。實現方式是sklearn中的linearregression,我們也學習了linearregression的四個引數,fit_intercept、normalize、copy_x、n_jobs。然後介紹了linearregression的幾個用法,fit(x,y)、predict(x)、score(x,y)。最後學習了matplotlib.pyplot將訓練集結果和測試集結果視覺化。

多元線性回歸分析與簡單線性回歸很相似,但是要複雜一些了(影響因素由乙個變成多個)。它有幾個假設前提需要注意,

①線性,自變數和因變數之間應該是線性的

②同方差,誤差項方差恆定

③殘差負荷正態分佈

④無多重共線性

出現了一些新的名詞,殘差(殘差是指實際觀察值與回歸估計值的差,【計量經濟學名詞】2絕對殘差)、多重共線性(解釋變數之間由於存在精確相關關係或高度相關關係而使模型估計失真或難以估計準確)。

對r感興趣的同學可以看一下我之前分享的幾篇文章

[r多元線性回歸容易忽視的幾個問題(1)多重共線性][2]

[r多元線性回歸容易忽視的幾個問題(2)多重共線性的克服][3]

[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)
個人感覺作為入門已經足夠。但是多元線性回歸分析是建立在上面說的四個假設前提上的(①線性,自變數和因變數之間應該是線性的②同方差,誤差項方差恆定③殘差負荷正態分佈④無多重共線性),所以初步得到乙個線性回歸模型,並不一定可以直接拿來使用,還需要進行驗證和診斷。

首發於:

100天搞定機器學習

新增好友麻煩備註 github 100天搞定機器學習 day1資料預處理 100天搞定機器學習 day2簡單線性回歸分析 100天搞定機器學習 day3多元線性回歸 100天搞定機器學習 day4 6 邏輯回歸 100天搞定機器學習 day7 k nn 100天搞定機器學習 day8 邏輯回歸的數學...

100天搞定機器學習 Day7 K NN

機器學習100天 day1資料預處理 100天搞定機器學習 day2簡單線性回歸分析 100天搞定機器學習 day3多元線性回歸 100天搞定機器學習 day4 6 邏輯回歸 最近事情無比之多,換了工作 組隊參加了乙個比賽 和朋友搞了一些小專案,公號荒廢許久。堅持是多麼重要,又是多麼艱難,目前事情都...

100天搞定機器學習 Day11 實現KNN

機器學習100天 day1資料預處理 100天搞定機器學習 day2簡單線性回歸分析 100天搞定機器學習 day3多元線性回歸 100天搞定機器學習 day4 6 邏輯回歸 100天搞定機器學習 day7 k nn 100天搞定機器學習 day8 邏輯回歸的數學原理 100天搞定機器學習 day9...