cv学习笔记(1)逻辑回归
研究生跟了老师做计算机视觉图像处理这方面,想先自学一点,记录一下过程。
逻辑函数模型
Y等于1的概率的逻辑函数。
损失函数
损失:预测的值与实际的值的差距。
损失函数:就是这些差距的和,是一个凸函数,有极小值。希望得到最优的系数Θ的值,使得这个损失函数的值最小,就是使导数为0。
损失函数的梯度
即损失函数求导。预测的值减去实际的值乘上x的值,对所有的情况求和,得到损失函数的梯度。
梯度下降法
对于每一个新的Θ,都采用梯度下降法,直到梯度达到0,那么Θ就是最佳值。
实例测试
下面展示一些 内联代码片
。
# -*- coding: utf-8 -*-
from sklearn import linear_model
import math
X = [[20, 3],
[23, 7],
[31, 10],
[42, 13],
[50, 7],
[60, 5]]
y = [0,
1,
1,
1,
0,
0]
#定义逻辑回归函数
lr = linear_model.LogisticRegression()
#训练逻辑回归模型
lr.fit(X, y)
#测试
testX = [[28, 8]]
label = lr.predict(testX)
print("predict:", label)
prob = lr.predict_proba(testX)
print("prob:", prob)
#%%
#查看三个theta 的值
theta_0 = lr.intercept_[0]
theta_1 = lr.coef_[0][0]
theta_2 = lr.coef_[0][1]
print("theta_0:", theta_0)
print("theta_1:", theta_1)
print("theta_2:", theta_2)
ratio = prob[0][1]/prob[0][0]
testX = [[28, 9]]
prob = lr.predict_proba(testX)
ratio_new = prob[0][1]/prob[0][0]
#增长后的比值的比值
ratio_of_ratio = ratio_new / ratio
print("ratio_of_ratio:", ratio_of_ratio)
#e的theta_2次
theta_2_e = math.exp(theta_2)
print("theta_2_e:", theta_2_e)
输出:
可以看到,对于28,8的输入数据,0的概率使0.15,1的概率是0.85。然后将第二个参数增加1,计算增长后的比值的比值,与e的Θ2次方比较,两个相等。
所以,按以上实例来说,Θ0=-0.04,Θ1=-0.20,Θ2=0.92。
Θ2=0.92意味着,如果x2增加1,那么结果是1和0的概率比值与之前的比值相比较,增加e^0.92=2.5倍。
再比如,Θ1=-0.20意味着,如果x1减少1,那么结果是1和0的概率比值与之前的比值相比较,减少e^0.20=0.82倍。