Introduction

In this exercise, you will implement linear regression and get to see it work
on data.

首先,先看看数据是什么样的好进一步分析

import numpy as np
import pandas as pd
import matplotlib.pyplot as pltpath = "data/ex1data1.txt"
data = pd.read_csv(path, header=None, names=['Population', 'profit'])
print(data)
data.plot(kind="scatter", x="Population", y="profit", figsize=(8, 5))
plt.show()


采用线性回归,尽可能准确地预测输出。
要拟合出一条直线采用均方误差作为损失函数,

我们预测

函数:

损失函数:

这里均方误差使用1/2m而不是1/m是因为后期梯度下降时,对损失函数求偏导平方求导会出现2,这里乘1/2
会使得后续计算方便
持续更新a于b直到收敛

下面就是如何计算偏导数,

# 均方误差
def squared_error(a, b):res = 0for row in data.iterrows():population = row[1][0]profit = row[1][1]res += pow(population*a+b - profit, 2)res = 1/(2*data.size)*resreturn res

使得均方误差足够小的a和b即为解,使用梯度下降.

同时更新a和b直到均方误差足够小(凭自己喜好),这里我规定偏导数

达到-9数量级时认为收敛,

附上源码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt# 均方误差
def squared_error(a, b):res = 0d_a = 0d_b = 0for row in data.iterrows():population = row[1][0]profit = row[1][1]res += pow(population*a + b - profit, 2)d_a += (population*a + b - profit) * populationd_b += (population*a + b - profit)res *= 1/(2*len(data))d_a *= 1/len(data)d_b *= 1/len(data)print("欧氏距离:", res, "   d_a:", d_a,  "     a:", a)return d_a, d_b# 梯度下降
def gradient_descent(a, b, alpha):d_a, d_b = squared_error(a, b)print(type(d_b))while abs(d_a) > 10e-9 and abs(d_b) > 10e-9:tamp_a = a - alpha * d_atamp_b = b - alpha * d_ba = tamp_ab = tamp_bd_a, d_b = squared_error(a, b)return a, bpath = "data/ex1data1.txt"
data = pd.read_csv(path, header=None, names=['Population', 'profit'])
data.plot(kind="scatter", x="Population", y="profit", figsize=(8, 5))a, b = gradient_descent(0, 0, 0.02)
x = np.linspace(data.Population.min(), data.Population.max(), 100)
y = a*x + b
plt.plot(x, y)
plt.show()

结果如下

吴恩达机器学习作业一相关推荐

  1. 吴恩达机器学习作业ex2-python实现

    系列文章目录 吴恩达机器学习作业ex1-python实现 吴恩达机器学习作业ex2-python实现 吴恩达机器学习作业ex3-python实现 作业说明及数据集 链接:https://pan.bai ...

  2. k均值算法python实现(吴恩达机器学习作业)

    k均值算法python实现(吴恩达机器学习作业) 题目要求 数据集 读取mat文件 K-means 实现 结果 问题 题目要求 采用K均值算法对样本进行聚类. 编写K均值算法源代码,对ex7data2 ...

  3. 第一章-机器学习简介 深度之眼_吴恩达机器学习作业训练营

    目录 专栏简介: 一,机器学习简介 1.1 机器学习定义 1.1 机器学习的重要性 1.2 应用领域 二.监督学习 三.无监督学习 四.总结 专栏简介: 本栏主要内容为吴恩达机器学习公开课的学习笔记, ...

  4. 吴恩达机器学习作业7 - K-means和PCA主成分分析(Python实现)

    吴恩达机器学习作业7 - K-means和PCA主成分分析(Python实现) Introduction 在本实验中,将实现K-means聚类算法,并将其应用于图像压缩.在第二部分实验中,将使用主成分 ...

  5. 吴恩达机器学习作业Python实现(八):异常检测和推荐系统

    吴恩达机器学习系列作业目录 1 Anomaly detection 这部分,您将实现一个异常检测算法来检测服务器计算机中的异常行为.他的特征是测量每个服务器的响应速度(mb/s)和延迟(ms).当你的 ...

  6. 吴恩达机器学习作业Python实现(七):K-means和PCA主成分分析

    吴恩达机器学习系列作业目录 1 K-means Clustering 在这个练习中,您将实现K-means算法并将其用于图像压缩.通过减少图像中出现的颜色的数量,只剩下那些在图像中最常见的颜色. 1. ...

  7. 吴恩达机器学习作业Python实现(六):SVM支持向量机

    吴恩达机器学习系列作业目录 1 Support Vector Machines 1.1 Example Dataset 1 %matplotlib inline import numpy as np ...

  8. 吴恩达机器学习作业Python实现(五):偏差和方差

    吴恩达机器学习系列作业目录 在本练习中,您将实现正则化的线性回归和多项式回归,并使用它来研究具有不同偏差-方差属性的模型 1 Regularized Linear Regression 正则线性回归 ...

  9. 吴恩达机器学习作业Python实现(四):神经网络(反向传播)

    吴恩达机器学习系列作业目录 1 Neural Networks 神经网络 在这个练习中,你将实现反向传播算法来学习神经网络的参数.依旧是上次预测手写数数字的例子. 1.1 Visualizing th ...

  10. 吴恩达机器学习作业Python实现(三):多类分类和前馈神经网络

    吴恩达机器学习系列作业目录 1 多类分类(多个logistic回归) 我们将扩展我们在练习2中写的logistic回归的实现,并将其应用于一对多的分类(不止两个类别). import numpy as ...

最新文章

  1. ORA-01109:数据库未打开(解决)
  2. 主瓣,旁瓣,栅瓣概念解析
  3. 为提高绩效,HR需要做的改进工作
  4. spring原始注解
  5. leetcode 上的Counting Bits 总结
  6. .net10个必备工具
  7. 逆反过程的学习会如何
  8. 【HDU - 5943】Kingdom of Obsession(数论,素数间隔结论,构造,思维,匈牙利算法,匹配问题)
  9. 一道非常简单的签到题
  10. c/c++面试题(1)
  11. 跪求***基地的邀请码
  12. VR线下体验店群雄并起,超级队长为何能靠IP突围?
  13. 100款机器学习数据集
  14. 使用QtXlsx读写Excel文件
  15. [小工具]取色器gcolor2
  16. 分时操作系统与分布式操作系统
  17. 如何将FLV视频转成MP3格式?
  18. 61、弱电工程数据中心的网络架构及其设计思路
  19. 用HTML+CSS做一个简单好看的校园社团网页
  20. nmon结果分析工具_使用nmon analyzer 分析指标

热门文章

  1. Python图像处理](2)---图像融合、加法运算及图像类型转换、图像缩放、图像旋转、图像翻转与图像平移
  2. 为程序界面添加滑动条
  3. hive外部表改为内部表_Hive基础之创建表
  4. mysql join联接_MySQL_join连接
  5. 华为hcia题库有哪些内容?华为HCIA认证考试多少分及格?
  6. OLT忘记登陆密码如何修改
  7. 学会这些知识普通人也能财务自由
  8. 郑州大学校园网使用指南
  9. Qt实现登陆界面(含代码)
  10. Python绘制Excel图表