2、sklearn实现线性回归

一、简单线性回归概念

简单线性回归经过拟合线性方程y=wx+b获得预测值,经过取得预测值和真实值的最小差距,获得w和b的值。dom

  公式:J(w,b)min=Σ(yi-yipre)2=∑(yi-wxi+b)2,即公式取最小值ide

二、经过最小二乘法求解w和b

  • w = ∑(xi-xmean)(yi-ymean)/∑*(xi-xmean)
  • b = ymean-axmean
  • 向量化公式:w = XY/XX
import numpy as np
from sklearn import datasets

from sklearn.model_selection import train_test_split

# 导入线性回归库
from sklearn.linear_model import LinearRegression

boston = datasets.load_boston()

a = boston.data
y = boston.target
a = a[y<50.0]
y = y[y<50.0]

X_train, X_test, y_train, y_test = train_test_split(a, y, random_state=666)

lin_reg = LinearRegression()

lin_reg.fit(X_train, y_train)

# 权重系数
lin_reg.coef_

# 截距
lin_reg.intercept_

# R2准确率
lin_reg.score
View Code

三、线性回归准确性的衡量标准

  通常J(w,b)值最小时预测准确率最高,但考虑样本集的数量,如:10000个样本偏差为1000,100个样本偏差为500,这样偏差为1000的预测效果好,因此要去掉样本集的影响。spa

  • 均方偏差:MSE=J(w,b)/m
  • 均方根偏差:RMSE=sqrt(MSE)
  • 平均绝对值偏差:MAE=∑|yi-yipre|/m  

四、最好的线性回归准确性的衡量标准R Squared

  公式:R2=1-∑(yi-yipre)2/∑(ymean-yi)2code

  分子:表示自定义模型预测产生的偏差blog

  分母:使用y=ymean基准模型预测产生的偏差get

  公式表示自定义模型对比基准模型的百分比it

  R2<=1且值越大表示自定义模型预测的效果越好io

  R2<0表面自定义模型预测效果极差,不如基准模型,数据之间大几率不是线性关系event

  R2分子分母同时除以样本m获得:R2 = 1-MSE(ypre-y)/var(y) (var是方差)class

import numpy as np
from sklearn import datasets

from sklearn.model_selection import train_test_split

# 导入线性回归库
from sklearn.linear_model import LinearRegression

# 导入(MSE)
from sklearn.metrics import mean_squared_error

# 导入(MAE)
from sklearn.metrics import mean_absolute_error

# 导入(R2)
from sklearn.metrics import r2_score

boston = datasets.load_boston()

a = boston.data
y = boston.target
a = a[y<50.0]
y = y[y<50.0]

X_train, X_test, y_train, y_test = train_test_split(a, y, random_state=666)

lin_reg = LinearRegression()

lin_reg.fit(X_train, y_train)

MSE = mean_squared_error(y, y_calculate)

MAE = mean_absolute_error(y, y_calculate)

# RMSE
RMSE = np.sqrt(MSE)

# R2
r2_score(y, y_calculate)
View Code

五、多元线性回归

  一个样本具备N个特征值:y = b + w1x1 + w2x2 + ...+ wmxm

 

六、线性回归模型的解释

  w系数的正负分别表明正负相关,数值大小表明相关程度

相关文章
相关标签/搜索