Python学习笔记-3群18组-杜杜狼-2017.8.14

Lesson 17 多重线性回归 (Multiple Linear Regression)

研究一个因变量与多个自变量间线性关系的方法
多元线性回归模型的一般形式为

y = β01x12x2+…+β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)

你可能感兴趣的:(Python学习笔记-3群18组-杜杜狼-2017.8.14)