机器学习课堂笔记(二)------简单线性回归法

一.简单线性回归法

简单线性回归法主要解决回归问题,就是在已知一些数据的情况下,找大最契合已知数据的直线方程:y = ax + b。寻找一条直线,可以最大程度上拟合样本特征和样本输出的关系。
机器学习课堂笔记(二)------简单线性回归法_第1张图片

例如,对于上述一次方程,当我们实现该模型后,输入一个房屋面积就可以通过此来预测房屋价格。那么我们需要的就是找到a,b两个参数,计算a,b的过程也就是训练的过程。
机器学习课堂笔记(二)------简单线性回归法_第2张图片
如上图所示,每一个x(i)都有一个真实值y(i)和一个预测值y_hat(i),那么y(i) - y_hat(i)可以作为衡量标准。但是对于一个点y(i) - y_hat(i) = 100,而对于另一个点y(i) - y_hat(i) = -100,这样简单相加是不对的。因此采用平方求和的方式。这样看起来求得是方差*n,就可以模型与真实值得契合度。

二.应用最小二乘法实现线性回归

  1. 推导公式
    如何训练模型,也就是说如何找到合适的a,b参数呢?这里我们使用最小二乘法,具体推导过程就不在此阐述。
    最终的推到公式如下所示:
    机器学习课堂笔记(二)------简单线性回归法_第3张图片
  2. 代码实现
import numpy as np
import matplotlib.pyplot as plt
x = np.array([1.,2.,3.,4.,5.])
y = np.array([1.,3.,2.,3.,5.])
plt.scatter(x,y)
plt.axis([0,6,0,6])
plt.show()

可以得到该数据得散点图
机器学习课堂笔记(二)------简单线性回归法_第4张图片
根据公式求a,b:

x_mean = np.mean(x)      ##求x得平均值
y_mean = np.mean(y)		 ##求y得平均值

num = 0.0                ##分子
d = 0.0					 ##分母
for x_i,y_i in zip(x,y):
    num += (x_i - x_mean) * (y_i - y_mean)
    d += (x_i - x_mean) ** 2

a = num / d
b = y_mean - a * x_mean

print(a)
print(b)
y_hat = a * x + b
plt.scatter(x,y)
plt.plot(x,y_hat,color = 'r')
plt.show()

输出a = 0.80000000000000004;b = 0.39999999999999947
最终得到的直线是:
机器学习课堂笔记(二)------简单线性回归法_第5张图片

你可能感兴趣的:(python,机器学习,python,人工智能,算法)