1. 程式人生 > >機器學習-多元線性迴歸(Multiple Regression)演算法

機器學習-多元線性迴歸(Multiple Regression)演算法

學習彭亮《深度學習基礎介紹:機器學習》課程

與簡單線性迴歸區別

  • 簡單線性迴歸:一個自變數(x)
  • 多元線性迴歸:多個自變數(x)

多元迴歸模型

y=β0+β1x1+β2x2+ … +βpxp+ε
其中:β0,β1,β2… βp是引數
ε是誤差值

多元迴歸方程

E(y)=β0+β1x1+β2x2+ … +βpxp

估計多元迴歸方程

y_hat=b0+b1x1+b2x2+ … +bpxp,(估計值),一個樣本被用來計算β0,β1,β2… βp的點估計b0, b1, b2,…, bp

估計方法

使sum of squares最小
這裡寫圖片描述

多元線性迴歸運算與簡單線性迴歸運算類似,涉及到線性代數和矩陣代數的運算

例子

這裡寫圖片描述

Time = b0+ b1*Miles + b2 * Deliveries

描述引數含義

  • b0: 平均每多運送一英里,運輸時間延長b1 小時
  • b1: 平均每多一次運輸,運輸時間延長 b2 小時

關於誤差的分佈

  • 誤差ε是一個隨機變數,均值為0
  • ε的方差對於所有的自變數來說相等
  • 所有ε的值是獨立的
  • ε滿足正態分佈,並且通過β0+β1x1+β2x2+ … +βpxp反映y的期望值

程式碼應用1(Xi均為連續變數)

這裡寫圖片描述

#coding=utf-8
# @Author: yangenneng
# @Time: 2018-01-17 15:42
# @Abstract:多元線性迴歸(Multiple Regression)演算法
from numpy import genfromtxt import numpy as np from sklearn import linear_model datapath=r"D:\Python\PyCharm-WorkSpace\MachineLearningDemo\MultipleRegression\data\data.csv" #從文字檔案中提取資料並轉為numpy Array格式 deliveryData = genfromtxt(datapath,delimiter=',') print "data" # print deliveryData # 讀取自變數X1(運送英里數),X2(運送次數)
x= deliveryData[1:,1:-1] # 讀取因變數(運送時間) y = deliveryData[1:,-1] print "x:",x print "y:",y # 呼叫線性迴歸模型 lr = linear_model.LinearRegression() # 裝配資料 lr.fit(x, y) print lr print("coefficients:") print lr.coef_ print("intercept:") print lr.intercept_ #預測 xPredict = [102,6] yPredict = lr.predict(xPredict) print("predict:") print yPredict

這裡寫圖片描述

程式碼應用2(Xi包含類別變數)

這裡寫圖片描述

對類別變數進行轉碼
這裡寫圖片描述

#coding=utf-8
# @Author: yangenneng
# @Time: 2018-01-17 16:11
# @Abstract:多元線性迴歸(Multiple Regression)演算法  含類別變數

from numpy import genfromtxt
import numpy as np
from sklearn import linear_model

datapath=r"D:\Python\PyCharm-WorkSpace\MachineLearningDemo\MultipleRegression\data\data2.csv"
#從文字檔案中提取資料並轉為numpy Array格式
deliveryData = genfromtxt(datapath,delimiter=',')

print "data"
# print deliveryData

# 讀取自變數X1...x5
x= deliveryData[1:,1:-1]
# 讀取因變數
y = deliveryData[1:,-1]

print "x:",x
print "y:",y

# 呼叫線性迴歸模型
lr = linear_model.LinearRegression()
# 裝配資料
lr.fit(x, y)

print lr

print("coefficients:")
print lr.coef_

print("intercept:")
print lr.intercept_

#預測
xPredict = [90,2,0,0,1]
yPredict = lr.predict(xPredict)
print("predict:")
print yPredict



這裡寫圖片描述