一、前言

大家在学习机器学习的时候大多数都是以一元线性回归入门,使用的是Python工具,由于机器学习入门比较难,很多人一开始弄不清楚头绪,其实一元线性回归在拟合曲线计算回归系数的时候还是有一些步骤的,比如最小二乘法,求残差,通过求导求极值。为了是大家能够快速看见结果,然后再慢慢的研习里面的原理,特给大家总结此文章,目的为:

1、了解一元线性回归的拟合过程

2、能够使用Python实现一元线性回归的拟合过程

3、了解一元线性模型拟合优度的测量评价

本案例的实验环境为:

1、以上版本

2、Python的基本数学库numpy、pandans、matplotlib、sklearn

3、Python的PyCharm开发环境

二、案例描述

一般来说房屋的售价和面积有很大的关系,也就是说面积是房屋的售价很大的一个权重,下面是一个房屋销售的数据如下:


在2000年以前某地区正常来说房屋售价为2000元/平方米,在以后的时间里有可能每个月房价稍稍有点浮动,但是浮动不大,整体还是近似的处于线性状态,请根据以上数据建立线性回归方程,并预测8平方米的售价。

三、一元线性回归的一个简单实现

1、概述

一元线性回归分析预测法,是根据自变量x和因变量Y的相关关系,建立x与Y的线性回归方程进行预测的方法。

两变量之间的关系

(1)函数关系:当自变量取值一定时,因变量取值由它唯一确定,这是确定关系。

(2)相关关系:当自变量取值一定时,因变量的取值带有一定的随机性,(例子:一块农田的水稻产量与施肥量之间的关系)这是不确定关系。

我们主要研究不确定型的函数关系,如收入与受教育程度之间的关系,等等问题。但它们之间存在明显的相互关系(称为相关关系),又是不确定的。

使用最小二乘法求解回归系数:

最小二乘法公式是一个数学的公式,在数学上称为曲线拟合,此处所讲最小二乘法,专指线性回归方程!最小二乘法公式为b=y(平均)-a*x(平均)。

2、一元线性回归检验指标:拟合优度

拟合优度就是相关系数的平方R^2,R^2最大值为1。R^2的值越接近1,说明回归直线对观测值的拟合程度越好;反之,R^2的值越小,说明回归直线对观测值的拟合程度越差。r2_score函数是计算R^{2}


3、一元线性回归模型拟合效果的判别:均方误差MSE

均方误差MSE用来检测预测值和真实值之间的偏差,


先给出已经调试通过的源代码:

importnumpyasnp

frommatplotlibimportpyplotasplt

_modelimportLinearRegression

y轴数据

y_data=([2,4,6.09,8,10.1,12.1,14.06])

print(x_data)

print(y_data)

建立模型

model=LinearRegression()

斜率print("coefficients:",_)

w=_[0]

测试

x_test=([[7]])

predict=(x_test)

print("predict:",predict)

(x_data,y_data,"b.")

(x_data,(x_data),"r")

开始训练(x_data,y_data)

预测房价

将测试数据x_data=(7)输入:

predict=(x_test)print("predict:",predict)可以得到房价8平米的预测值为:predict:[[16.10571429]]


拟合优度分析

Python提供的相应的函数为:

_score(y_true,y_pred,sample_weight=None,multioutput=’uniform_average’)

计算我们的拟合优度:

_scorey_true=[2,4,6,8,10,12,14]y_pred=[2,4,6.09,8,10.1,12.1,14.06]print(r2_score(y_true,y_pred))

输出结果为:0.9997169642857143

说明我们的线性拟合度还是十分不错的。

均方误差MSE检验

Python为我们提供了均方误差MSE检验的方法mean_squared_error(),实现如下:

预测值

y_pred=[2,4,6.09,8,10.1,12.1,14.06]

_squared_error

print(mean_squared_error(y_true,y_pred))

结果为:0.004528571428571414

从结果来看,均方误差非常小,看来拟合的效果还是很理想的。