梯度下降模型
线性回归公式推导查看
梯度下降公式推导查看
伪代码:
读取数据(查看数据分布)
拆分正负数据集
实现逻辑回归算法
建立分类器
设定阈值,根据阈值完成数据结果
sigmoid:映射到概率的函数
model:返回预测结果值
cost:根据参数计算损失
gradient:计算每个参数的梯度方向
descent:进行参数更新
accuracy:计算精度
优化及比较
梯度下降处理原则
首先优化数据,如归一化处理等
然后优化模型,如更换算法模型,调整参数等
比较三种梯度下降方法
1、迭代次数,限定梯度下降计算次数
2、计算损失值,比较损失值,与目标函数变化很小
3、梯度变化,判断梯度很小时
三种梯度下降法
1、批量梯度下降法BGD:目的是要误差函数尽可能的小
初始化weigths,然后不断反复的更新weights使得误差函数减小,直到满足要求时停止
2、随机梯度下降法SGD:利用每个样本的损失函数对θ求偏导得到对应的梯度,来更新θ
3、min-batch 小批量梯度下降法MBGD:结合批量梯度下降与随机梯度下降
运行效率高,代码收敛快
读取数据、图型化查看数据分布
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#读取数据
path='F:\python\机器学习\data\梯度下降求解逻辑回归\梯度下降\data\logireg_data.txt'
data=pd.read_csv(path,header=None,names=['e1','e2','admitted'])
#数据图型化查看
positive=data[data['admitted']==1]
negative=data[data['admitted']==0]
fig,ax=plt.subplots(figsize=(10,5))
ax.scatter(positive['e1'],positive['e2'],s=30,marker='o',label='admitted')
ax.scatter(negative['e1'],negative['e2'],s=30,marker='x',label='not admitted')
ax.legend()
ax.set_xlabel('e1')
ax.set_ylabel('e2')
数据处理
#原始数据处理
data.insert(0,'ones',1) #增加常量列
theta=np.zeros([1,3])
#数据构造
orig_data=data.values #构造矩阵
cols=orig_data.shape[1]
X=orig_data[:,0:cols-1]
y=orig_data[:,cols-1:cols]
实现逻辑回归算法