【Python】机器学习之单变量线性回归 利用批量梯度下降找到合适的参数值
【Python】机器学习之单变量线性回归 利用批量梯度下降找到合适的参数值
本题目来自吴恩达机器学习视频。
题目:
你是一个餐厅的老板,你想在其他城市开分店,所以你得到了一些数据(数据在本文最下方),数据中包括不同的城市人口数和该城市带来的利润。第一列是城市的人口数,第二列是在这个城市开店所带来的利润数。
现在,假设一开始θ0和θ1都是0,利用梯度下降的方法,找到合适的θ值,其中学习速率α=0.01,迭代轮次为1000轮
上一个文章里,我们得出了CostFunction,即损失函数。
现在我们需要找到令损失函数最小的θ值,利用梯度下降函数
1、导包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
2、之前写的CostFunction函数
def computeCost(X, y, theta):
inner = np.power(((X * theta.T) - y), 2)
return np.sum(inner) / (2 * len(X))
3、引入文件,把X和Y分开,在X左边加一列1,θ0和θ1设置为0,0
path = 'ex1data1.txt'
data = pd.read_csv(path, header=None, names=['Population', 'Profit'])
data.insert(0, 'Ones', 1)
rows = data.shape[0]
cols = data.shape[1]
X = data.iloc[:, 0:cols - 1]
Y = data.iloc[:, cols - 1:cols]
theta = np.mat('0,0')
X = np.mat(X.values)
Y = np.mat(Y.values) cost = computeCost(X, Y, theta)
4、设置更新速率α为0.01,设置迭代次数为1000次
alpha = 0.01
iters = 1500
5、写出梯度下降函数的实现
def gradientDescent(X, Y, theta, alpha, iters):
temp = np.mat(np.zeros(theta.shape)) # 一个数组,temp大小为θ的个数
parameters = int(theta.ravel().shape[1]) # 参数的个数
cost = np.zeros(iters) # 一个数组,存着每次计算出来的costFunction的值 for i in range(iters):
error = (X*theta.T)-Y; #误差值
for j in range(parameters):
term = np.multiply(error,X[:, j])
temp[0,j] = theta[0,j] - ((alpha/len(X)) * np.sum(term))
theta = temp
cost[i] = computeCost(X,Y,theta)
return theta, cost
解析:
temp数组存的是临时变量,因为所有的θ需要同步更新,所以先存入临时变量中,后面计算完所有θ的值后再同步更新。
parameters是一个int值的数,即有多少个变量,本题中有θ0和θ1,所以parameters=2
cost是一个数组,大小和迭代次数一样,每一层存放当前迭代次数下的CostFunction的返回值
6、调用函数,并返回结果
g, cost = gradientDescent(X, Y, theta, alpha, iters)
print(g)
最后结果g=[[-3.24140214 1.1272942 ]]
即最后的θ0=-3.24 θ1=1.127
7、把图打出来,看看是否收敛
fig, ax = plt.subplots(figsize=(12,8))
ax.plot(np.arange(iters),cost,'r')
ax.set_xlabel('Iterations')
ax.set_ylabel('Cost')
plt.show()

发现随着迭代次数iters的增大,损失慢慢的降低,所以有效,计算正确。
PS:数据集在机器学习的第一篇中的最下方。
【Python】机器学习之单变量线性回归 利用批量梯度下降找到合适的参数值的更多相关文章
- 【Python】机器学习之单变量线性回归 利用正规方程找到合适的参数值
[Python]机器学习之单变量线性回归 利用正规方程找到合适的参数值 本次作业来自吴恩达机器学习. 你是一个餐厅的老板,你想在其他城市开分店,所以你得到了一些数据(数据在本文最下方),数据中包括不同 ...
- 机器学习 (一) 单变量线性回归 Linear Regression with One Variable
文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang的个人笔 ...
- 吴恩达机器学习(二) 单变量线性回归(Linear Regression with one variable)
一.模型表示 1.一些术语 如下图,房价预测.训练集给出了房屋面积和价格,下面介绍一些术语: x:输入变量或输入特征(input variable/features). y:输出变量或目标变量(out ...
- 机器学习之单变量线性回归(Linear Regression with One Variable)
1. 模型表达(Model Representation) 我们的第一个学习算法是线性回归算法,让我们通过一个例子来开始.这个例子用来预测住房价格,我们使用一个数据集,该数据集包含俄勒冈州波特兰市的住 ...
- 【Python】机器学习之单变量线性回归练习(计算Cost Function)
注:练习来自于吴恩达机器学习 翻译后的题目: 你是一个餐厅的老板,你想在其他城市开分店,所以你得到了一些数据(数据在本文最下方),数据中包括不同的城市人口数和该城市带来的利润.第一列是城市的人口数,第 ...
- python 单变量线性回归
单变量线性回归(Linear Regression with One Variable)¶ In [54]: #初始化工作 import random import numpy as np imp ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 2_Linear regression with one variable 单变量线性回归
Lecture2 Linear regression with one variable 单变量线性回归 2.1 模型表示 Model Representation 2.1.1 线性回归 Li ...
- 机器学习第2课:单变量线性回归(Linear Regression with One Variable)
2.1 模型表示 之前的房屋交易问题为例,假使我们回归问题的训练集(Training Set)如下表所示: 我们将要用来描述这个回归问题的标记如下: m 代表训练集中实 ...
- 机器学习(二)--------单变量线性回归(Linear Regression with One Variable)
面积与房价 训练集 (Training Set) Size Price 2104 460 852 178 ...... m代表训练集中实例的数量x代表输入变量 ...
随机推荐
- linux 信号量
https://www.jianshu.com/p/6e72ff770244 无名信号量 #include <time.h> #include <stdio.h> #inclu ...
- 3、获取Class对象的三种方式
3.获取Class对象的三种方式 要想对字节码文件进行解刨,必须要有字节码文件对象 Object类中的getClass方法 通过对象静态属性 .class来获取对应的Class对象 只要通过给定类的字 ...
- 2、细节&Class对象
2.细节&Class对象 class Class{ 提供获取字节码文件中的内容. 比如: 名称,字段,构造函数,一般函数 } 该类就可以获取字节码文件中的所有内容,那么反射就是依靠该类完成的. ...
- Codeforces Round #495 (Div. 2) A,B,C
A题 1.新添加一间酒店,要求酒店离已有的最近的一间酒店的距离恰好等于d 2.最左和最右必定存在合适的两种情况 3.酒店之间的情况就要判断两间酒店间的距离: 小于2d,表示无法在这两间酒店中间找到合适 ...
- 全选所有checkbox
$("table input[type=checkbox]").attr("checked",true)
- 一些有用的dll
1.生成excel工具- EPPlus EPPlus.dll 2.生成word工具 - OpenXml DocumentFormat.OpenXml.dll 3.生成条形码工具 - ZXing zx ...
- @PathVariable,@RequestParam, @RequestBody
https://www.cnblogs.com/guoyinli/p/7056146.html https://www.cnblogs.com/zeroingToOne/p/8992746.html ...
- mkfs/mk2fs/fsck/e2fsck/tune2fs/blkid
mkfs 格式化创建Linux文件系统的工具 centos 6 使用xfs文件系统 fsck 检测及修复文件系统的工具 当磁盘出现逻辑错误的时候,可以尝试修复. fsck -t ext2|ext3 / ...
- 2019.7.9 校内测试 T2 极值问题
这一次是交流测试?边交流边测试(滑稽 极值问题 乍一看这是一道数学题,因为1e9的数据让我暴力的心退却. 数学又不好,不会化简式子嘞,咋办? 不怕,咱会打表找规律.(考场上真的是打表找出了规律,打表打 ...
- ImportError: No module named rospy
Traceback (most recent call last): File "manage.py", line 4, in <module> import rosp ...