首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

全量梯度下降-逻辑回归参数的优化

上篇内容对逻辑回归的基本理论做了归纳,本篇将使用全量梯度下降法来寻找逻辑回归的参数。全量梯度下降法在每次更新参数时需要遍历整个数据集。全量梯度下降法优点是每次更新会朝着正确的方向进行,缺点是每次学习时间过长。

##### python实现全量梯度下降法 #####

# 定义逻辑回归函数

def sigmoid(z):

return 1.0/(1+np.exp(-z))

# 全量梯度下降法拟合参数

def gradDescent(xData, yLabel):

dataMat = np.mat(xData)

labelMat = np.mat(yLabel).T

m,n = np.shape(dataMat)

gamma = 0.001# 设置步长

iterNum = 1000# 设置迭代次数

theta = np.ones((n,1))# 初始化参数全为1

for k in range(iterNum):

H = sigmoid(dataMat*theta)# 计算预测值

error = (H - labelMat) # 计算误差

D = dataMat.T* error# 计算梯度

theta = theta - gamma * D # 更新参数

yPred = H

return theta, yPred

############## over ##############

以含有两个特征的二维列表xData为例,第1列取值为1,定义为X0,第2列和第3列分别为X1和X2。

标签为一维列表 yLabel,取值为:

带入计算:

theta, yPred = gradDescent(xData, yLabel)

得到theta为:

yPred为:

得到的yPred为预测为类别1的概率,现在设置阈值为0.5,即yPred>=0.5,预测为1,否为为0,下面得到的yPredClass即为预测的类别:

yPredList = yPred.T.tolist()[0]

yPredArr = np.array(yPredList)

yPredClass = np.where(yPredArr>=0.5, 1, 0)

最后看看预测的效果如何:

from sklearn.metrics import classification_report

classification_report(yLabel, yPredClass)

从上图可以看出,预测1的准确率为0.98,召回率为0.96,f1评分为0.97。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180507G1V8U300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券