吴恩达机器学习作业(1):线性回归
目录
1)导入相关库和数据
2)代价函数
3)批量梯度下降
4)绘制线性模型
前阵子在网易云课堂学习了吴恩达老师的机器学习课程,今天结合网上资料,用Python实现了线性回归作业,共勉。建议大家使用Jupyter notebook来编写程序。
1)导入相关库和数据
导入相关库:numpy, pandas, matplotlib
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
拿到数据之后,建议大家先看看数据长什么样子,这样有助于我们进行之后的分析:
path = 'ex1data1.txt'
#指定了列名,header=None
data = pd.read_csv(path, header=None, names=['Population', 'Profit'])
data.head()data.describe()data.plot(kind='scatter', x='Population', y='Profit', figsize=(12,8))
plt.show()
2)代价函数
现在我们使用梯度下降来实现线性回归,以最小化成本函数。
首先,我们将创建一个以参数为特征的代价函数:
其中:
def computeCost(X, y, theta):inner = np.power(((X * theta.T) - y), 2)return np.sum(inner) / (2 * len(X))
我们需要在训练集中添加一列,以便我们可以使用向量化解决方案来计算大家函数:
#在第0列插入1,列名为“Ones”
data.insert(0, 'Ones', 1)# set X (training data) and y (target variable)
#cols = 3
cols = data.shape[1]
X = data.iloc[:,0:cols-1] #X选取所有行,去掉最后一列,第一个分号前为行。
y = data.iloc[:,cols-1:cols]#y选取所有行,最后一列
代价函数应该是numpy矩阵,所以我们需要转换X和y,然后才能使用它们。我们还需要初始化参数theta。
X = np.matrix(X.values)
y = np.matrix(y.values)
#我们这里是单变量线性回归,故只需要两个参数
theta = np.matrix(np.array([0,0]))
现在我们计算代价函数(theta初始值为0)
computeCost(X, y, theta)
32.072733877455676
3)批量梯度下降
我们前面只是计算了初试theta为0时代价函数的值,我们现在要使用梯度下降算法来求我们的参数。
def gradientDescent(X, y, theta, alpha, iters):temp = np.matrix(np.zeros(theta.shape)) #theta.shape=(1,2)parameters = int(theta.ravel().shape[1]) #ravel()降维,parameters=2cost = np.zeros(iters) #iter维零向量for i in range(iters): #迭代iters次error = (X * theta.T) - yfor j in range(parameters): #2个参数term = np.multiply(error, X[:,j])temp[0,j] = theta[0,j] - ((alpha / len(X)) * np.sum(term))theta = tempcost[i] = computeCost(X, y, theta) #保存每次迭代后的cost值return theta, costalpha = 0.01
iters = 1000
现在我们运行梯度下降算法来求我们的参数theta并求出拟合后的代价函数值。
g, cost = gradientDescent(X, y, theta, alpha, iters)computeCost(X, y, g)
4.5159555030789118
4)绘制线性模型
现在我们来绘制线性模型以及数据,直观地看出它的拟合。
x = np.linspace(data.Population.min(), data.Population.max(), 100)
f = g[0, 0] + (g[0, 1] * x)fig, ax = plt.subplots(figsize=(12,8))
ax.plot(x, f, 'r', label='Prediction')
ax.scatter(data.Population, data.Profit, label='Traning Data')
ax.legend(loc=2)
ax.set_xlabel('Population')
ax.set_ylabel('Profit')
ax.set_title('Predicted Profit vs. Population Size')
plt.show()
由于梯度方程式函数也在每个训练迭代中输出一个代价的向量,所以我们也可以绘制。 请注意,代价总是降低 - 这是凸优化问题的一个例子。
fig, ax = plt.subplots(figsize=(12,8))
ax.plot(np.arange(iters), cost, 'r')
ax.set_xlabel('Iterations')
ax.set_ylabel('Cost')
ax.set_title('Error vs. Training Epoch')
plt.show()
吴恩达机器学习作业(1):线性回归相关推荐
- 吴恩达机器学习作业 1线性回归
一.单变量线性回归 数据可视化 import numpy as np import pandas as pd import matplotlib.pyplot as plt #print(np.eye ...
- 吴恩达机器学习作业ex2-python实现
系列文章目录 吴恩达机器学习作业ex1-python实现 吴恩达机器学习作业ex2-python实现 吴恩达机器学习作业ex3-python实现 作业说明及数据集 链接:https://pan.bai ...
- 第一章-机器学习简介 深度之眼_吴恩达机器学习作业训练营
目录 专栏简介: 一,机器学习简介 1.1 机器学习定义 1.1 机器学习的重要性 1.2 应用领域 二.监督学习 三.无监督学习 四.总结 专栏简介: 本栏主要内容为吴恩达机器学习公开课的学习笔记, ...
- k均值算法python实现(吴恩达机器学习作业)
k均值算法python实现(吴恩达机器学习作业) 题目要求 数据集 读取mat文件 K-means 实现 结果 问题 题目要求 采用K均值算法对样本进行聚类. 编写K均值算法源代码,对ex7data2 ...
- 吴恩达机器学习作业7 - K-means和PCA主成分分析(Python实现)
吴恩达机器学习作业7 - K-means和PCA主成分分析(Python实现) Introduction 在本实验中,将实现K-means聚类算法,并将其应用于图像压缩.在第二部分实验中,将使用主成分 ...
- 吴恩达机器学习作业Python实现(五):偏差和方差
吴恩达机器学习系列作业目录 在本练习中,您将实现正则化的线性回归和多项式回归,并使用它来研究具有不同偏差-方差属性的模型 1 Regularized Linear Regression 正则线性回归 ...
- 吴恩达机器学习作业Python实现(八):异常检测和推荐系统
吴恩达机器学习系列作业目录 1 Anomaly detection 这部分,您将实现一个异常检测算法来检测服务器计算机中的异常行为.他的特征是测量每个服务器的响应速度(mb/s)和延迟(ms).当你的 ...
- 吴恩达机器学习作业Python实现(七):K-means和PCA主成分分析
吴恩达机器学习系列作业目录 1 K-means Clustering 在这个练习中,您将实现K-means算法并将其用于图像压缩.通过减少图像中出现的颜色的数量,只剩下那些在图像中最常见的颜色. 1. ...
- 吴恩达机器学习作业Python实现(六):SVM支持向量机
吴恩达机器学习系列作业目录 1 Support Vector Machines 1.1 Example Dataset 1 %matplotlib inline import numpy as np ...
- 吴恩达机器学习作业Python实现(二):logistic回归
吴恩达机器学习系列作业目录 1 Logistic regression 在这部分的练习中,你将建立一个逻辑回归模型来预测一个学生是否能进入大学.假设你是一所大学的行政管理人员,你想根据两门考试的结果, ...
最新文章
- 原创:纯手工打造CSS像素画--笨笨熊系列图标
- checkbox全选衍生问题讨论
- android:layout_gravity=end,Android中 layout_gravity和gravity的区别
- js整理 03-18
- 【报告分享】2019双11洞察报告资料包(含6大权威报告下载链接)
- 框架对比_2020 年前端框架性能对比和评测
- throw和throws有什么区别
- 学习EXT第八天:EXT的布局(Layout)Part 1
- python中如何将列表按列打印_如果列表只包含0,我如何在python中打印?
- WIN7 IE10降级为IE9
- 安卓苹果双端五级分销影视APP源码美化版
- FLUKE高端时域反射OTDR OFP-100-Q上线
- uniapp拍照上传照片流程笔记
- 解决用友固定资产出现的“不能月末结账,可能月末未结账”的处理办法
- 中小型企业网络规划设计方案_深圳线尚网络:中小型企业网站建设方案包含哪些内容?...
- 佐切的第三天学习分享
- 客户案例 | 初窥元宇宙,Oasis让更多人找到第二人生
- Android的adb命令 查看sqlite命令
- 编程文档中常见的 Foo 和 Bar
- Unfortunately XXX has stopped. 系统应用安装后导致其他应用
热门文章
- matlab2008报错,simulink的.mdl的文件在matlab2008a中打开报错,高手指点下
- python request库_【Python爬虫】Request库入门
- Canvas之进度条的制作(矩形,圆环)
- php关闭按钮,C#_winform去掉右上角关闭按钮的方法,一种方法是可以在窗体的属性 - phpStudy...
- python pp模块_python常用模块
- 树莓派 蓝牙音响_你应该拥有一个树莓派
- php 简析对象,PHP白盒审计工具RIPS源码简析
- php鼠标悬停显示图片,鼠标滑过出现预览的大图提示效果
- UE4中的字符串转换
- Asterisk PBX 快速安装向导