5.线性回归算法

1.本节重点知识点用自己的话总结出来,可以配上图片,以及说明该知识点的重要性

 本节课讲了线性回归算法的相关的知识,回顾了与线性回归相关的线性代数、高等数学的知识,进入了线性回归的学习,介绍了线性回归算法的研究背景。

回顾了这些知识才能继续后面学习,有助于加快理解后面的概念。

介绍讲解了线性回归的定义。从理论公式入手理解算法更有指导性和依据。

 

 讲解了回归和分类的区别。了解了区别能明白它们的不同,有不同的应用场景。

 学习了损失函数的概念以及作用。引入损失函数的概念,可以帮助我们更好的理解误差。

2.思考线性回归算法可以用来做什么?(大家尽量不要写重复)

 线性回归算法将数据拟合出一条直线出来,线性算法的实现是计算出直线与离散数据的疏密程度。线性回归算法的应用场景有:电影观影人数的预测;社交平台粉丝互动量预测;根据天气预测人们生产活动和购物的趋势;新闻关键词热度的预测;体育比赛球队胜率的预测;根据人流量预测交通是否堵塞。

3.自主编写线性回归算法 ,数据可以自己造,或者从网上获取。(加分题)

用Python实现线性回归方程的求解,实现代码如下:

import numpy as np
from matplotlib import pylab as pl

# 定义训练数据
x = np.array([3,4,2,1,3])
y = np.array([18,20,16,9,24])

# 回归方程求取函数
def fit(x,y):
    if len(x) != len(y):
        return
    numerator = 0.0
    denominator = 0.0
    x_mean = np.mean(x)
    y_mean = np.mean(y)
    for i in range(len(x)):
        numerator += (x[i]-x_mean)*(y[i]-y_mean)
        denominator += np.square((x[i]-x_mean))
    print('分子:',numerator,'分母:',denominator)
    b0 = numerator/denominator
    b1 = y_mean - b0*x_mean
    print('斜率:', b0, '截距:', b1)
    return b0,b1

# 定义预测函数
def predit(x,b0,b1):
    return b0*x + b1

# 求取回归方程
b0,b1 = fit(x,y)
print('该线性回归方程为:y = %2.0fx + %2.0f'%(b0,b1))

# 预测
x_test = np.array([0.5,1.5,2.5,3,4])
y_test = np.zeros((1,len(x_test)))
for i in range(len(x_test)):
    y_test[0][i] = predit(x_test[i],b0,b1)

# 绘制图像
xx = np.linspace(0, 5)
yy = b0*xx + b1
pl.plot(xx,yy,'k-')
pl.scatter(x,y,cmap=pl.cm.Paired)
pl.scatter(x_test,y_test[0],cmap=pl.cm.Paired)
pl.show()

运行结果:

分子: 20.8 分母: 5.2
斜率: 4.0 截距: 6.999999999999998
该线性回归方程为:y = 4x + 7

实验截图:

 

posted @ 2020-04-21 23:42  两年半练习生  阅读(391)  评论(0编辑  收藏  举报