统计建模:线性回归模型

回归:建立因变量 y 和自变量 x 之间的函数关系

  • y ˆ k = f ( X ) \text{\^{y}}_k = f(X) yˆk=f(X)
  • y:希望被预测或被解释的变量,目标或响应
  • x:预测变量,一般指容易获得的样本特征,x 可以作为向量。当包含多个特征时,为多元回归
  • 根据函数关系 f f f 是否为线性,分为线性回归和非线性回归

线性回归

y ˆ k = β 0 + β 1 x k \text{\^{y}}_k = \beta_0 + \beta_1x_k yˆk=β0+β1xk

  • β 0 \beta_0 β0:截距
  • β 1 \beta_1 β1:回归系数
  • y ˆ k \text{\^{y}}_k yˆk:将模型得到的值称为预测值
  • y k \text{y}_k yk:将对 y 观测得到的值称为观测值
  • 预测值和观测值之间的差异就是残差
  • 最小二乘法求回归线方程
  • 回归直线是使残差平方和最小的直线,且通过点 ( x ˉ , y ˉ ) (\bar{x}, \bar{y}) xˉ,yˉ
  • 均方根误差 RMSE: R M S E = 1 N ∑ ( y ˆ i − y k ) 2 RMSE = \sqrt{{\frac{1}{N}\sum(\text{\^{y}}_i - \text{y}_k)^2 }} RMSE=N1(yˆiyk)2
  • RMSE与 y 有相同单位或量纲
  • Sklearn库中linear_mode 模块中的LinerRegression对象可以用来做线性回归

鸢尾花数据集:http://archive.ics.uci.edu/ml/datasets/Iris

import pandas as pd
import numpy as np
from scipy import stats
from matplotlib import pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn import metrics

my_iris=pd.read_csv('E:\my_data\iris\iris.csv', sep=',', decimal='.',header=None,
                   names=['sepal_length','sepal_width',
                            'petal_length', 'pental_width', 'target'])
feature_cols='petal_length'
x = my_iris[[feature_cols]]
y = np.array(my_iris['sepal_length'])
plt.plot(x, y, 'o', alpha=0.5)

linreg = LinearRegression()
linreg.fit(x, y)

print('f(x) = ', linreg.intercept_ , '+', linreg.coef_[0], 'x')

pred_y = linreg.predict(x)
plt.plot(x, pred_y,'g',alpha=0.5)
plt.plot(np.array(x).mean(),y.mean(), 'r*', ms = 12)
print('RMSE =', np.sqrt(metrics.mean_squared_error(y, pred_y)))
print('\n')
print('r_score = ', linreg.score(x, y))
  • 回归效果评价参数( r 2 {r^2} r2):回归平方和与样本的总平方和之比,也等于1减去残差平方和之比。用模型可解释部分与总离差比较,取值在0到1之间,越靠近1,模型可解释乘法越多,性能越好。
  • 总平方和:样本相对于样本均值的总离差。
  • 回归平方和:由于回归函数索隐入的样本相对于均值的离差,属于样本变异性中可以被回归模型解释的部分。
  • 残差平方和:变异性中不能被模型解释的部分。
线性相关分析线性回归模型
线性相关系数反映两个变量的耦合程度,其中两个变量的地位平等,不能用一个去预测另一个强调回归函数的确定,之间建立起两个变量之间的函数关系,以期用 x 去预测 y
取值 [ -1, 1]取值 [0, 1]
  • r 2 = ρ 2 r^2 = \rho^2 r2=ρ2
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值