1. 程式人生 > >100天搞定機器學習|Day3多元線性迴歸

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

前情回顧 第二天100天搞定機器學習|Day2簡單線性迴歸分析,我們學習了簡單線性迴歸分析,這個模型非常簡單,很容易理解。實現方式是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)

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

https://github.com/MLEveryday/100-Days-Of-ML-Code?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io

首發於: >首發於微信公眾號:機器學習與統計學 歡迎掃碼關注,   
 
 </div> 
 <div class=

相關推薦

100機器學習|Day3多元線性迴歸

前情回顧 第二天100天搞定機器學習|Day2簡單線性迴歸分析,我們學習了簡單線性迴歸分析,這個模型非常簡單,很容易理解。實現方

100機器學習|Day4-6 邏輯迴歸

邏輯迴歸avik-jain介紹的不是特別詳細,下面再嘮叨一遍這個演算法。 1.模型 在分類問題中,比如判斷郵件是否為垃圾郵件,判斷

100機器學習|Day15 樸素貝葉斯

Day15,開始學習樸素貝葉斯,先了解一下貝爺,以示敬意。 托馬斯·貝葉斯 (Thomas Bayes),英國神學家、數學家、數理統計學家和哲學家,1702年出生於英國倫敦,做過神甫;1742年成為英國皇家學會會員;1763年4月7日逝世。貝葉斯曾是對概率論與統計的早期發展有重大影響的兩位(貝葉斯和布萊斯·帕

100機器學習|Day17-18 神奇的邏輯迴歸

前情回顧 機器學習100天|Day1資料預處理 100天搞定機器學習|Day2簡單線性迴歸分析 100天搞定機器學習|Day3多元線性迴歸 100天搞定機器學習|Day4-6 邏輯迴歸 100天搞定機器學習|Day7 K-NN 100天搞定機器學習|Day8 邏輯迴歸的數學原理 100天搞定機器學習|Day9

100機器學習|Day23-25 決策樹及Python實現

演算法部分不再細講,之前發過很多: 【算法系列】決策樹 決策樹(Decision Tree)ID3演算法 決策樹(Decision Tree)C4.5演算法 決策樹(Decision Tree)CART演算法 ID3、C4.5、CART三種決策樹的區別 實驗: 匯入需要用到的python庫 import

100機器學習|Day 30-32 微積分的本質

3blue1brown系列課程,精美的動畫,配上生動的講解,非常適合幫助建立數學的形象思維,非常值得反覆觀看: http://www.3blue1brown.com/ 嗶哩嗶哩: https://space.bilibili.com/88461692 作者還把製作視訊的用到的程式碼放到了 github

100機器學習|Day33-34 隨機森林

前情回顧 機器學習100天|Day1資料預處理 100天搞定機器學習|Day2簡單線性迴歸分析 100天搞定機器學習|Day3多元線性迴歸 100天搞定機器學習|Day4-6 邏輯迴歸 100天搞定機器學習|Day7 K-NN 100天搞定機器學習|Day8 邏輯迴歸的數學原理 100天搞定機器學習|Day9

100機器學習|Day35 深度學習之神經網路的結構

100天搞定機器學習|Day1資料預處理 100天搞定機器學習|Day2簡單線性迴歸分析 100天搞定機器學習|Day3多元線性迴歸 100天搞定機器學習|Day4-6 邏輯迴歸 100天搞定機器學習|Day7 K-NN 100天搞定機器學習|Day8 邏輯迴歸的數學原理 100天搞定機器學習|Day9-12

100機器學習|Day36用有趣的方式解釋梯度下降演算法

本文為3Blue1Brown神經網路課程講解第二部分《Gradient descent, how neural networks learn 》的學習筆記,觀看地址:www.bilibili.com/video/av16144388前文我們已經搭建了一個包含兩個隱藏層的神經網路,我們需要這樣一種演算法:網路得

100機器學習|day37 無公式理解反向傳播演算法之精髓

 100天搞定機器學習(Day1-34) 100天搞定機器學習|Day35 深度學習之神經網路的結構 100天搞定機器學習|Day36 深度學習之梯度下降演算法 本篇為100天搞定機器學習之第37天,亦為3Blue1Brown《深度學習之反向傳播演算法》學習筆記。 上集提到我們

100機器學習|day38 反向傳播演算法推導

往期回顧 100天搞定機器學習|(Day1-36) 100天搞定機器學習|Day37無公式理解反向傳播演算法之精髓 上集我們學習了反向傳播演算法的原理,今天我們深入講解其中的微積分理論,展示在機器學習中,怎麼理解鏈式法則。 我們從一個最簡單的網路講起,每層只有一個神經元,圖上這個網路就是由三個權重

100機器學習|day39 Tensorflow Keras手寫數字識別

提示:建議先看day36-38的內容 TensorFlow™ 是一個採用資料流圖(data flow graphs),用於數值計算的開源軟體庫。節點(Nodes)在圖中表示數學操作,圖中的線(edges)則表示在節點間相互聯絡的多維資料陣列,即張量(tensor)。它靈活的架構讓你可以在多種平臺上展開計算,

100機器學習|day40-42 Tensorflow Keras識別貓狗

100天搞定機器學習|1-38天 100天搞定機器學習|day39 Tensorflow Keras手寫數字識別 前文我們用keras的Sequential 模型實現mnist手寫數字識別,準確率0.9713。今天我們完成day40-42的課程,實現貓、狗的識別。 本文資料集下載地址 https://down

100機器學習|day43 幾張GIF理解K-均值聚類原理

前文推薦 如何正確使用「K均值聚類」? KMeans演算法是典型的基於距離的聚類演算法,採用距離作為相似性的評價指標,即認為兩個物件的距離越近,其相似度就越大。該演算法認為簇是由距離靠近的物件組成的,因此把得到緊湊且獨立的簇作為最終目標。 K個初始聚類中心點的選取對聚類結果具有較大的影響,因為在該演算法第一步

100機器學習|Day56 隨機森林工作原理及調參實戰(信用卡欺詐預測)

本文是對100天搞定機器學習|Day33-34 隨機森林的補充 前文對隨機森林的概念、工作原理、使用方法做了簡單介紹,並提供了分類和迴歸的例項。 本期我們重點講一下: 1、整合學習、Bagging和隨機森林概念及相互關係 2、隨機森林引數解釋及設定建議 3、隨機森林模型調參實戰 4、隨機森林模型優缺點總結 整

吳恩達-機器學習(2)-多元線性迴歸、正規方程

文章目錄 Multivariate Linear Regression 特徵縮放 學習率 多項式迴歸(Ploynomial regression) Normal Equation

大資料(四十一)機器學習多元線性迴歸例項】

一、前言         保險公司對個人投保時或根據歷史資料生成的模型來計算個人保費,那麼本次我們就以這個模型的求解過程為例來實踐下多元線性迴歸。 二、資料&簡單分析         我們已經獲取到保險公司部分資料,檔名為insurance.csv,檔案內容如下

機器學習sklearn多元線性迴歸

from __future__ import print_function from sklearn import datasets from sklearn.linear_model import

100專案 Day3 多元線性迴歸

      多元線性迴歸嘗試通過一個線性方程來適配觀測資料,這個線性方程是在兩個及以上的特徵和響應之間構建的一個關係。       多元線性迴歸的實現步驟和簡單線性迴歸很相似,在評價部分有所不同。     &nb

從0到1 | 0基礎/轉行如何用3個月機器學習

寫這篇文章的初衷是現在好多朋友都想了解如何入門/轉行機器學習,搭上人工智慧這列二十一世紀的快車。再加上這個問題每隔一陣子就會有人提及,因此想寫篇文章來個一勞永逸。 文章的宗旨: 指出學習中的一些誤區 提供客觀可行的學習表 給出進階學習的建議 目標讀者是: 零基礎,對人工智慧感興趣的讀者 有基