Lesson 17 多重線性回歸 (Multiple Linear Regression)
研究一個(gè)因變量與多個(gè)自變量間線性關(guān)系的方法
多元線性回歸模型的一般形式為
y = β0+β1x1+β2x2+…+βnxn+e
y:因變量
xn:自變量
β0:常數(shù)項(xiàng)
βn:偏回歸系數(shù)(regression coefficient)
e: 隨機(jī)誤差
多重線性回歸分析步驟與簡(jiǎn)單線性回歸一致
#Step1: 繪制多個(gè)變量?jī)蓛芍g散點(diǎn)圖
scatter_matrix(
data[["店鋪的面積", "距離最近的車站", "月營業(yè)額"]],
figsize=(10, 10), diagonal='kde'
)
#計(jì)算相關(guān)系數(shù)绪囱,確定用線性回歸
data[["店鋪的面積", "距離最近的車站", "月營業(yè)額"]].corr()
x = data[["店鋪的面積", "距離最近的車站"]]
y = data[["月營業(yè)額"]]
from sklearn.linear_model import LinearRegression
#建模(估計(jì)模型參數(shù)富岳,建立回歸模型振惰,利用最小二乘法)
lrModel = LinearRegression()
#訓(xùn)練模型
lrModel.fit(x, y)
#評(píng)分(調(diào)整判定系數(shù))
lrModel.score(x, y)
#預(yù)測(cè)
lrModel.predict([10, 110])
lrModel.predict([[10, 110],[20, 110]])
#查看參數(shù)
lrModel.coef_
API
矩陣數(shù)據(jù)繪制散點(diǎn)圖
pandas.tools.plotting.scatter_matrix(matrix, figsize, diagonal)
#matrix: 矩陣
#figsize: 圖形大小
#diagonal: 對(duì)角線填充钞楼,kde為直方圖,一般繪制出來是正態(tài)分布
Lesson 18 一元非線性回歸(Univariate Nonlinear Regression)
在回歸分析中吓歇,只包括一個(gè)自變量和一個(gè)因變量魄幕,且二者關(guān)系可用一條曲線近似表示,則稱為一元非線性回歸分析
y = anxn + an-1xn-1 + ... + a1x1 + a0x0
求解過程
#通過scatter_matrix繪制兩兩自變量和因變量組合的散點(diǎn)圖
from pandas.tools.plotting import scatter_matrix;
scatter_matrix(
data[["等級(jí)", "資源"]],
alpha=0.8, figsize=(10, 10), diagonal='kde'
)
#觀察發(fā)現(xiàn)與一元二次方程的圖形走勢(shì)一致苛秕,繪畫出一元二次方程散點(diǎn)圖
import numpy;
x_ = numpy.arange(-10, 10, 0.01);
y_ = x_**2
from matplotlib import pyplot as plt;
plt.figure();
plt.title('等級(jí)與資源')
plt.xlabel('等級(jí)')
plt.ylabel('資源')
plt.grid(True)
plt.plot(x_, y_, 'k.')
plt.show()
#引入線性回歸
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
x
#一元二次方程自變量轉(zhuǎn)成二元一次方程自變量
pf = PolynomialFeatures(degree=2)
x_2_fit = pf.fit_transform(x)
x_2_fit
#按照一元線性回歸求解
lrModel = LinearRegression()
lrModel.fit(x_2_fit, y)
lrModel.score(x_2_fit, y)
#Attention: predict時(shí),也需要將一元N次數(shù)據(jù)轉(zhuǎn)成多元一次數(shù)據(jù)
x_2_predict = pf.fit_transform([[21], [22], [23]])
lrModel.predict(x_2_predict)
重點(diǎn)API:一元N次方程找默,轉(zhuǎn)多元線性方程:
pf = sklearn.preprocessing.PolynomialFeatures(degree=2)
# degree: 回歸方程的次數(shù)
#轉(zhuǎn)化方法
x_2_fit = pf.fit_transform(x)