简单的线性回归及最小二乘法(四)

1.简单的线性回归

之前讲的KNN算法是分类,分类的目标变量是标称型数据,回归的目的是预测数值型的目标值。两者的区别是,回归用于预测连续型的数据,分类用于离散型数据。

一般说的回归都是线性回归,就是评估自变量X与因变量Y之间的一种线性关系。当只有一个自变量的时候,称为一元线性回归,即简单线性回归;当具有多个自变量的时候, 称为多元线性回归。一元线性回归就是输入的数据集:
在这里插入图片描述
能够找到一组参数a、b,使得:
在这里插入图片描述
在这里插入图片描述
简单线性回归算法目的就是找到a和b的值,使得预测值ŷi和真实值yi之间的绝对值最小,绝对值不好求导,因此变成求平方,即
在这里插入图片描述
将下面公式代入
在这里插入图片描述
使得预测值与真实值最小,即最佳拟合
在这里插入图片描述
要注意的是,a和b是未知数,而x,y是已知数,即我们要输入的一组数据,将数据集代入该函数,则能求出a和b的值。一般叫这个函数为损失函数,也有叫效用函数,损失函数越小越好,而效用函数则越大越好,即最优化这个函数,即我们的目标函数。

求a和b的值,即是最小二乘法的过程。

2.最小二乘法

最小二乘法就是指,找到a和b,使得
在这里插入图片描述
即为J(a,b),即求该式的极值,一般求极值,就是对该式进行求导,即对a,b进行求导,得:
在这里插入图片描述
由于b前面只有一个-1,因此先对b求导,即:
在这里插入图片描述
再对a求偏导,得到:
在这里插入图片描述
在这里插入图片描述
即得到:
在这里插入图片描述在这里插入图片描述

3.基于Python实现

#!/usr/bin/env python 
# -*- coding:utf-8 -*-

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()

x_mean=np.mean(x)
y_mean=np.mean(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

y_hat = a*x + b
plt.scatter(x,y)
plt.plot(x,y_hat,color='r')
plt.axis([0,6,0,6])
#plt.show()

x_predict=6
y_predict=a*x_predict+b
print('y_predict:',y_predict)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值