一 二分分类
在图片二分类问题中,目标是训练一个分类器,以图片的特征向量x作为输入,预测输出的结果标签y是1还是0 也就是预测图片是否有猫。
x是n×m维矩阵 其中m是训练样本数,n是图片总维度 比如RGB n=64×64×3 x,y均用列表示
x.shape //输出矩阵维度 (n,m)
y.shape// (1,m)
二 逻辑回归
面对一个图片二分类问题,x为输入图片的特征向量,y实质上就是是否为图片的概率,假设参数为w,b 线性回归方程wT* x+b 为了满足输出在0-1之间,在线性方程上加一个sigmoid函数 也就是逻辑回归方程。
三 逻辑回归损失函数
如何训练w,b是考虑的问题
对于逻辑回归损失函数(衡量单一训练样例效果),为了避免出现局部最优解,不采用平方差,而采用最下面的公式。最终我们采用成本函数(衡量所有训练样本的效果)找到w,b 使得成本函数尽可能的小。
四 梯度下降法
梯度下降法,沿着最快下降方向走
显示的for循环面对大量数据处理时会降低算法速度,因此摆脱这种显示for循环是一种方法,也就是向量化。
五 向量化
import numpy as np
a=np.array([1,2,3,4])
print(a)
> [1 2 3 4]
import time
a=np.random.rand(1000000)
b=np.random.rand(1000000)
tic=time.time()
c=np.dot(a,b)
toc=time.time()
print(str(1000*(toc-tic))+"ms")
> 3.878355026245117ms
c=0
tic=time.time()
for i in range(1000000):
c=c+a[i]*b[i]
toc=time.time()
print(str(1000*(toc-tic))+"ms")
> 401.29566192626953ms
时间差一百多倍,随着数据的增加会更加明显。
六 向量化逻辑回归
z=np.dot(wT,X)+b
这里的X是(n,m)维 W是(1,n)维 b正常是(1,1)python中广播机制b会自动变成(1,m)维。
没有向量化之前的逻辑回归实现
向量化后的逻辑回归实现。
七 广播机制
import numpy as np
A=np.array([
[12,34,56,76],
[45,67,89,90],
[53,73,86,97],
])
print(A)
CAL=A.sum(axis=0)
print(CAL)
CAL1=A.sum(axis=1)
print(CAL1)
percentage=100*A/CAL.reshape(1,4)
print(percentage)
如何将A(3,4)除以CAL(1,4) 利用广播机制实现