首页 / 算法 / 5.线性回归算法 4/20
5.线性回归算法 4/20
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了5.线性回归算法 4/20,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3247字,纯文字阅读大概需要5分钟。
内容图文
1.本节重点知识点用自己的话总结出来,可以配上图片,以及说明该知识点的重要性
· 我们先了解回归算法:
· 课上老师举了线性回归的应用:①房价预测;②销售额预测;③贷款额度预测;
我们可以发现做线性回归,需要的数据都应该为连续型,最终要预测的因素成为目标值,把影响的因素成为特征;如果影响的因素只有一个,那么这就是一个单线性回归,如果有多个影响因素,那就是一个多线性回归。
★ 我认为这里有一个重要的知识点就是:线性回归的数据应该是连续型的,如果拿到的数据如下图红色标点,那便不符合线性回归模型。
· 线性回归模型:
(1)如果是一个变量,那就是二维空间;多个变量就是三维空间。
★(2)线性回归问题可以转换为矩阵乘积问题,矩阵在线性回归中扮演一个重要的角色。矩阵的计算正好满足线性回归的要求,所以矩阵的计算也是一个重点知识:
①数组与矩阵的特性与区别:
②用代码比较数据和矩阵相乘的结果:
· 机器学习需要迭代算法来减少误差,这里引入一个 损失函数(误差的大小);学习的目的,就是将损失函数最小化:
减少误差的方法(优化线性回归的策略):
①正规方程:
★②梯度下降法:
?为学习速率,学习速率的取值取决于数据样本。机器进行学习,多次迭代,如果损失函数在变小,说明结果越准确,取值准确。
关于梯度下降的具体概念可以参考:https://www.cnblogs.com/jwwzone/p/12684355.html的第二题。
梯度下降代码:
# 梯度下降 import random import time import matplotlib.pyplot as plt # 产生数据 _xs = [0.1 * x for x in range(0, 10)] _ys = [12 * i + 4 for i in _xs] print(_xs) print(_ys) w = random.random() b = random.random() a1 = [] b1 = [] for i in range(100): for x, y in zip(_xs, _ys): o = w * x + b # 预测值 e = (o - y) # 误差 loss = e ** 2 # 损失 dw = 2 * e * x # 对w求导 db = 2 * e * 1 # 对d求导 # 梯度下降,0.1为学习率 w = w - 0.1 * dw b = b - 0.1 * db # 最终结果:loss越小越好,w接近12,b接近4 print('loss={0},w={1},b={2}'.format(loss, w, b)) a1.append(i) b1.append(loss) plt.plot(a1, b1) plt.pause(0.1) plt.show()
2.思考线性回归算法可以用来做什么?(大家尽量不要写重复)
可以用于:
(1)家庭家电的预测:①时间与功率之间的关系;②时间与电压之间的多项式关系。
(2)医学上可以预测年龄和血压的关系。
(3)预测一个发展的电信市场的网络容量。
3.自主编写线性回归算法 ,数据可以自己造,或者从网上获取。(加分题)
数据是我以前爬虫的广州市二手房数据,前几天爬了一次被抓到了哈哈。
数据如下(获取单价和总价作为数据样本):
用单价来预测总价,可视化结果如下:
我们可以看到预测值和真实值还是比较接近的,这说明用单价来预测总价还是比较靠谱的。从模型的权值也可以看出,预测结果相对准确:
import pandas as pd import matplotlib.pyplot as plt data = pd.read_csv('house.csv', index_col=0) # 读取数据 # 线型回归 from sklearn.linear_model import LinearRegression regr = LinearRegression() # 构建模型 regr.fit(data[['单价']].values, data['总价']) print('权值:', regr.coef_, '截距:', regr.intercept_) plt.plot(regr.predict(data[['单价']].values), linewidth=1.7, linestyle='-', color='#A6CEE3') # 预测结果 plt.plot(data[['总价']].values, linewidth=1.7, linestyle='-', c='#FDBF6F') # 可视化处理 plt.rcParams['font.sans-serif'] = 'SimHei' plt.rcParams['axes.unicode_minus'] = False plt.legend(['真实值', '预测值']) plt.title('广州市二手房价格线型回归模型预测结果') plt.show()
我们也可以画出单价和总价呈线性关系的可视化视图:
plt.scatter(data['单价'].values, data['总价'].values) plt.plot(data[['单价']].values, regr.predict(data[['单价']].values), c='r') plt.title('广州市二手房价格与单价散点图') plt.xlabel('单价') plt.ylabel('总价') plt.show()
内容总结
以上是互联网集市为您收集整理的5.线性回归算法 4/20全部内容,希望文章能够帮你解决5.线性回归算法 4/20所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。