1、线性回归基础练习
(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
(2)单变量线性回归
1假设你是一家餐厅的领导,正在考虑在不同的城市开设新的分店。该连锁店已经在不同的城市有了餐车,并且你能够获得每个城市的人口和利润数据。现在需要使用这些数据来帮助你选择下一个被扩展的城市。文件ex1data1.txt包含线性回归问题的数据集。第一列数据对应城市人口,第二列数据对应那座城市的餐车的利润。利润为负时表示亏损。
(3)绘制数据
在开始进入练习之前,对数据进行可视化通常很有用。对于该数据集,可以使用散点图进行可视化,因为它只有两个属性(人口、利润)。
(4)梯度下降
在该部分中,将使用梯度下降来选择合适的线性回归参数θ用以拟合给定数据集。
接下来,我们在数据中添加了一个维度来拟合截距项 𝜃0。并将初始参数值设为0,学习率 𝛼 设为0.01。
计算成本
在执行梯度下降最小化成本函数 𝐽(𝜃) 时,通过计算成本来监视收敛状态是有帮助的。在该部分练习任务中,你需要实现一个计算成本 𝐽(𝜃)的函数computeCost,用于检查梯度下降实现的收敛性。其中,X和y不是标量值,而是矩阵,其行代表训练集中的示例。
要点:完成该函数后,将 𝜃值初始化为0并进行成本的计算,将得到的成本值打印出来。如果结果为32.07,则计算通过。
梯度下降
接下来,我们将实现梯度下降,给出的代码已经实现了循环结构,你只需要在每次的迭代中提供0的更新。在进行代码实现时,请确保你了解要优化的内容,和正在更新的内容。请记住,成本J(⑴)为参数-被向量0终止,而不是X和y。也就是说,我们将J(O)的值最小化通过改变矢量0的值,而不是通过改变X或y。验证梯度下降是否正常工作的一种好方法是查看J(①)的值,并检查该值每步是否减小。每次迭代时,代码都会调用computeCost函数并打印成本。假设你实现了梯度下降,正确地计算成本,J(O)值永远不会增加,并且应该在算法结束时收敛到稳定值。
可视化
2、逻辑回归基础练习
(1)Logistic回归
在该部分练习中,将建立一个逻辑回归模型,用以预测学生能否被大学录取。
假设你是大学某个部门的负责人,你要根据两次考试的结果来决定每个申请人的入学机会。目前已经有了以往申请者的历史数据,并且可以用作逻辑回归的训练集。对于每行数据,都包含对应申请者的两次考试分数和最终的录取结果。
在本次练习中,你需要建立一个分类模型,根据这两次的考试分数来预测申请者的录取结果。
数据可视化
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
path = 'ex2data1.txt'
data = pd.read_csv(path, header=None, names=['Exam 1', 'Exam 2', 'Admitted'])
data.head()
positive = data[data['Admitted'].isin([1])]
negative = data[data['Admitted'].isin([0])]
fig, ax = plt.subplots(figsize=(12,8))
ax.scatter(positive['Exam 1'], positive['Exam 2'], s=50, c='b'