练习1:线性回归
介绍
在本练习中,您将 实现线性回归并了解其在数据上的工作原理。
在开始练习前,需要下载如下的文件进行数据上传:
- ex1data1.txt -单变量的线性回归数据集
- ex1data2.txt -多变量的线性回归数据集
在整个练习中,涉及如下的必做作业,及标号*
的选做作业:
- 实现简单示例函数----------(5分)
- 实现数据集显示的函数-------(5分)
- 计算线性回归成本的函数-----(40分)
- 运行梯度下降的功能函数-----(50分)
- 数据标准化*
- 多变量线性回归的梯度下降功能实现*
必做作业为实现单变量的线性回归;选做作业为实现多变量线性回归。
点击屏幕右上方的下载实验数据模块,选择下载,然后再依次选择点击上方的File->Open->Upload,上传刚才下载的数据集。
1 实现简单示例函数
在该部分练习中,将通过代码实现返回一个5*5
的对角矩阵。输出与如下相同:
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
1.1 提交解决方案
在以下代码框中进行如上的实现,完成部分练习后,得到如上的相同结果即为通过。
import numpy as np
###在这里填入代码###
mat = np.zeros((5,5))
for i in range(5):
mat[i][i]=1
mat
array([[1., 0., 0., 0., 0.],
[0., 1., 0., 0., 0.],
[0., 0., 1., 0., 0.],
[0., 0., 0., 1., 0.],
[0., 0., 0., 0., 1.]])
2 单变量线性回归
在该部分练习中,将实现单变量线性回归并用来预测餐车的利润。
假设你是一家餐厅的领导,正在考虑在不同的城市开设新的分店。该连锁店已经在不同的城市有了餐车,并且你能够获得每个城市的人口和利润数据。
现在需要使用这些数据来帮助你选择下一个被扩展的城市。
文件ex1data1.txt
包含线性回归问题的数据集。第一列数据对应城市人口,第二列数据对应那座城市的餐车的利润。利润为负时表示亏损。
2.1 绘制数据
在开始进入练习之前,对数据进行可视化通常很有用。对于该数据集,可以使用散点图进行可视化,因为它只有两个属性(人口、利润)。
# 引入所需要的库文件
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import os
%matplotlib inline
# 数据存储路径
path = 'ex1data1.txt'
# 读入相应的数据文件
data = pd.read_csv(path, header=None,names=['Population','Profit'])
#查看数据的前五条
data.head(20)
Population | Profit | |
---|---|---|
0 | 6.1101 | 17.59200 |
1 | 5.5277 | 9.13020 |
2 | 8.5186 | 13.66200 |
3 | 7.0032 | 11.85400 |
4 | 5.8598 | 6.82330 |
5 | 8.3829 | 11.88600 |
6 | 7.4764 | 4.34830 |
7 | 8.5781 | 12.00000 |
8 | 6.4862 | 6.59870 |
9 | 5.0546 | 3.81660 |
10 | 5.7107 | 3.25220 |
11 | 14.1640 | 15.50500 |
12 | 5.7340 | 3.15510 |
13 | 8.4084 | 7.22580 |
14 | 5.6407 | 0.71618 |
15 | 5.3794 | 3.51290 |
16 | 6.3654 | 5.30480 |
17 | 5.1301 | 0.56077 |
18 | 6.4296 | 3.65180 |
19 | 7.0708 | 5.38930 |
接下来需要实现数据可视化的代码,该部分数据绘制出的图像应与如下相同。
要点:
- 实现散点图可视化
- 数据分布为红色点
- 标清横纵坐标名称
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wIJdMHjo-1672217455060)(1-1.png)]
###在这里填入代码###
plt.scatter(data.Population,data.Profit,color='red')
<matplotlib.collections.PathCollection at 0x7ff182b68358>
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ItCVVlnS-1672217455062)(output_8_1.png)]
2.2 梯度下降
在该部分中,将使用梯度下降来选择合适的线性回归参数θ用以拟合给定数据集。
2.2.1 更新公式
线性回归的目的是最小化成本函数:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HspunGV9-1672217455063)(1-2.png)]
假设 h θ ( X ) h_{\theta}(X) hθ(X)由以下线性模型给出:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IOFTQXuJ-1672217455063)(1-3.png)]
回顾一下,模型的参数是 θ j \theta_j