学习目标:
1.学习了第一个机器学习算法—梯度下降与代价函数相结合的线性回归算法。
2.学习了python的一些基础知识。
3.学习数学基础的概率部分。
学习内容:
一.机器学习
1.基本模型
Training set:向学习算法提供训练集
Learning Algorithm:学习算法任务--输出一个函数
h:hypothesis(假设函数)引导从x得到y的函数
(1)模型描述: 监督学习⾥有⼀个数据集,⼜称为训练集
(2)参数⽤字⺟定义: m:训练样本的数量 x:输⼊变量,或者说特征 y:输出变量,预测的⽬标变量 (x,y)表示⼀个训练样本。
(3)(x^(i),y^(i))表示特定的训练样本,表示第i个训练样本
2.回归问题
(1) 如何表示假设函数h:
ℎ_θ(x)=θ_0+θ_1x(线性回归模型)
θ_x: Parameters 模型参数
(2)如何选择两个参数值θ_0和θ_1:
训练集中预测值和真实值的差的平方和的1/2m最小的θ_0和θ_1的值就是所需选择的值。
(3)代价函数:
3.梯度下降算法
将代价函数J最小化的方法为梯度下降法
(1)Start with some θ_0,θ_1
给θ_0,θ_1赋予初值
(2)Keep changing θ_0,θ_1 to reduce J(θ_0,θ_1)until we hopefully end up at a minimum
慢慢的改变θ_0,θ_1的值,去减小代价函数 J(θ_0,θ_1)直达到得到希望的最小值
梯度下降算法(Gradient descent algorithm)
α:表示学习率函数,用于控制梯度下降时,迈出多大的步子。
(或控制我们以多大的幅度更新θ)
θ_0与θ_1必须同时更新
4.线性回归算法梯度下降与代价函数相结合就得到了第一个机器学习算法--线性回归算法(Batch梯度下降法)
梯度下降:
线性回归模型:
将梯度下降法运用到最小化平方差代价函数中。
二.Python
数据类型和变量
数据类型: 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。
1.字符串和编码
(1)字符串是以Unicode编码的,也就是说,Python的字符串支持多语言. 对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:
(2)如果知道字符的整数编码,还可以用十六进制这么写str:
2.使用list和tuple
Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素b比如说列出班里所有同学的名字,就可以用一个list表示:
(1)变量classmates就是一个list。用len()函数可以获得list元素的个数:
(2)用索引来访问list中每一个位置的元素,记得索引是从0开始的:
(3)当索引超出了范围时,Python会报一个IndexError错误,所以,要确保索引不要越界,记得最后一个元素的索引是len(classmates) - 1。 如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素:
(4)Python内置另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改。
3.条件判断
计算机之所以能做很多自动化的任务,因为它可以自己做条件判断。
在Python程序中,用if语句实现 根据Python的缩进规则,如果if语句判断是True,就把缩进的两行print语句执行了,否则,什么也不做。
也可以给if添加一个else语句,意思是,如果if判断是False,不要执行if的内容,去把else执行。
同样也可以用elif做更细致的判断,elif是else if的缩写,完全可以有多个elif,所以if语句的完整形式就是:
if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>