逻辑回归损失函数如何求解模型的参数?
① 逻辑回归损失函数需要求解是模型的参数
② 对于线性回归模型而言,可以使用最小二乘法,对于逻辑回归而言使用传统最小二乘法求解是不合适的。
![c432b1e440ef5c01fe34b23f61c1e2d7.png](https://i-blog.csdnimg.cn/blog_migrate/e2cbc6bb5d7dcf107cc9815bdac13c09.jpeg)
注:不能使用经典最小二乘法的原因在于:逻辑回归模型的参数估计问题不能 "方便地" 定义 "误差" 或者 "残差"。
③ 考虑使用迭代类算法优化,最常见的就是 "梯度下降法"。
注:常用梯度下降还有三种:批量梯度下降 ( BGD )、随机梯度下降 ( SGD )、small batch 梯度下降。
注:梯度下降的迭代公式如下:
注:下面对如何求损失函数对参数
![a9ef65dfdaab5acfcdd39578e32d4d74.png](https://i-blog.csdnimg.cn/blog_migrate/b051f1c862cb34bc438710846217bf94.png)
![07959a8b91294d9c5821e034d6e5f365.png](https://i-blog.csdnimg.cn/blog_migrate/66fc5fb555928022fc7582267315bc38.png)
注:最后将求得的梯度带入迭代公式中,即为:
注:公式中,i 代表样本数,j 代表特征数。
Python基础积累(numpy)
numpy如何用布尔矩阵提取数据
import numpy as np
student_name = np.array(['Tom', 'Lily', 'Jack', 'Rose']) # 存储学生姓名的数组
student_name
运行结果:
array(['Tom', 'Lily', 'Jack', 'Rose'], dtype='<U4')
注:<表示字节顺序,小端(最小有效字节存储在最小地址中)。
注:U表示Unicode,数据类型。
注:4表示元素位长,数据大小。
student_score = np.array([[79, 88, 80], [89, 90, 92], [83, 78, 85], [78, 76, 80]]) # 存储学生成绩的数组
student_score
运行结果:
array([[79, 88, 80],
[89, 90, 92],
[83, 78, 85],
[78, 76, 80]])
student_name == 'Jack'
运行结果:
array([False, False, True, False])
注:对矩阵名student_name和字符串“Jack”通过运算符产生一个布尔型数组。
student_score[student_name=='Jack']
运行结果:
array([[83, 78, 85]])
注:将布尔数组作为索引应用于存储成绩的数组student_score。
注:返回的数据是True值对应的行。
参考文献:
- 知乎/东哥起飞/从零开始学会逻辑回归