Lesson 17 多重线性回归 (Multiple Linear Regression)
研究一个因变量与多个自变量间线性关系的方法
多元线性回归模型的一般形式为
y = β0+β1x1+β2x2+…+βnxn+e
y:因变量
xn:自变量
β0:常数项
βn:偏回归系数(regression coefficient)
e: 随机误差
多重线性回归分析步骤与简单线性回归一致
#Step1: 绘制多个变量两两之间散点图
scatter_matrix(
data[["店铺的面积", "距离最近的车站", "月营业额"]],
figsize=(10, 10), diagonal='kde'
)
#计算相关系数,确定用线性回归
data[["店铺的面积", "距离最近的车站", "月营业额"]].corr()
x = data[["店铺的面积", "距离最近的车站"]]
y = data[["月营业额"]]
from sklearn.linear_model import LinearRegression
#建模(估计模型参数,建立回归模型,利用最小二乘法)
lrModel = LinearRegression()
#训练模型
lrModel.fit(x, y)
#评分(调整判定系数)
lrModel.score(x, y)
#预测
lrModel.predict([10, 110])
lrModel.predict([[10, 110],[20, 110]])
#查看参数
lrModel.coef_
API
矩阵数据绘制散点图
pandas.tools.plotting.scatter_matrix(matrix, figsize, diagonal)
#matrix: 矩阵
#figsize: 图形大小
#diagonal: 对角线填充,kde为直方图,一般绘制出来是正态分布
Lesson 18 一元非线性回归(Univariate Nonlinear Regression)
在回归分析中,只包括一个自变量和一个因变量,且二者关系可用一条曲线近似表示,则称为一元非线性回归分析
y = anxn + an-1xn-1 + ... + a1x1 + a0x0
求解过程
#通过scatter_matrix绘制两两自变量和因变量组合的散点图
from pandas.tools.plotting import scatter_matrix;
scatter_matrix(
data[["等级", "资源"]],
alpha=0.8, figsize=(10, 10), diagonal='kde'
)
#观察发现与一元二次方程的图形走势一致,绘画出一元二次方程散点图
import numpy;
x_ = numpy.arange(-10, 10, 0.01);
y_ = x_**2
from matplotlib import pyplot as plt;
plt.figure();
plt.title('等级与资源')
plt.xlabel('等级')
plt.ylabel('资源')
plt.grid(True)
plt.plot(x_, y_, 'k.')
plt.show()
#引入线性回归
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
x
#一元二次方程自变量转成二元一次方程自变量
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时,也需要将一元N次数据转成多元一次数据
x_2_predict = pf.fit_transform([[21], [22], [23]])
lrModel.predict(x_2_predict)
重点API:一元N次方程,转多元线性方程:
pf = sklearn.preprocessing.PolynomialFeatures(degree=2)
# degree: 回归方程的次数
#转化方法
x_2_fit = pf.fit_transform(x)