深度学习:逻辑斯蒂回归

目录

解决分类问题的思想

Sigmoid函数条件

线性模型和逻辑回归模型的学习模型对比

代码实现

1.准备数据

2.定义模型

3.建立损失函数和优化器

4.模型训练

5.模型应用


参考视频:06.逻辑斯蒂回归_哔哩哔哩_bilibili

解决分类问题的思想

不是让y=0-9这种实数,而是要计算属于每一个分类的概率,在各分类概率值中找最大值,概率值最大的这个分类即为结果。

分类为题计算p(y_hat=1) 输出的是概率

找一个函数把函数的实数值映射到[0,1]区间上的值。即将线性的值转为非线性的值。

  • 当x趋近于正无穷时,y趋近于1.

  • 当x趋近于0时,y趋近于0.5

  • 当x趋近于负无穷时,y趋近于0

Sigmoid函数条件

  • 函数值在[0,1]区间

  • 在定义域内是单调函数(增函数)

  • 满足饱和函数 

 Sigmoid函数中最出名的就是Logistic函数,在pytorch中,Sigmoid函数默认是Logistic函数。

线性模型和逻辑回归模型的学习模型对比

线性模型和逻辑回归模型的学习模型对比

线性模型和逻辑回归模型的损失函数对比

计算分布之间的差异。输出分布;y_hat表示的是p(class=1),1-y_hat=p(class=0)。

分布之间差异度量:

  • KL散度

  • cross-entropy:交叉熵 交叉熵损失函数公式为:

  •  

BCE损失函数,其中ce为交叉熵,小批量的损失函数

 

因为σ函数里面无参数,所以不用初始化,他没有参数可供训练,将来直接调用即可。

signmoid这个函数定义在nn模块下的functional包下。relu也在该包下

代码实现

1.准备数据

import torch
import numpy as np
import matplotlib.pyplot as plt
​
x_data = torch.Tensor([[1.0], [2.0], [3.0]])
y_data = torch.Tensor([[0],[0],[1]])

2.定义模型

class LogisticRegreesionModel(torch.nn.Module):
    def __init__(self):
        super(LogisticRegreesionModel, self).__init__() #super第一个参数是类名,后面调用父类的init()
        self.linear = torch.nn.Linear(1,1)  #Linear是pytorch的一个类,构造一个对象,Linear包括权重和偏置,Linear也是继承nn.Module的,可以实现反向传播
    def forward(self, x):
        y_pred = F.sigmoid(self.linear(x)) 
        return y_pred
model = LogisticRegreesionModel()   #实例化,这个model是callable的,是可以被调用,求出y-hat

3.建立损失函数和优化器

criterion = torch.nn.BCELoss(size_average=False)
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

4.模型训练

import torch.nn.functional as F
for epoch in range(1000):
    y_pred = model(x_data)
    loss = criterion(y_pred, y_data)
    print(epoch, loss.item())
    
    optimizer.zero_grad()  #梯度归零
    loss.backward()  #反馈,计算梯度
    optimizer.step()  #根据梯度和预先设置的学习率进行更新w和b的值

5.模型应用

x=np.linspace(0,10,200)
x_t = torch.Tensor(x).view((200,1))
y_t = model(x_t)
y = y_t.data.numpy()
plt.plot(x,y)
plt.plot([0,10],[0.5,0.5],c='r')
plt.xlabel('Hours')
plt.ylabel('Probability of Pass')
plt.grid()
plt.show()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自律的光电人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值