当前位置:   article > 正文

【机器学习】逻辑斯蒂回归

【机器学习】逻辑斯蒂回归

线性模型与回归

线性模型一般表示为:

向量形式可表示为:

其中的W与b就是要求解的参数

通过最小二乘实现参数求解

线性回归目标:回归预测值与真实值的误差最小

因此我们需要对参数w和b求偏导求解误差最小值

求解得

对数线性回归

对数线性回归目的:通过线性模型预测非线性的复杂函数

逻辑斯蒂回归

逻辑斯蒂回归:

        虽然名字是回归,但本质上是一个分类任务

sigmoid函数:

            获得分类概率

         

损失函数:

定义:

转化为成本函数

梯度下降

用梯度下降法来求得使代价函数最小的参数。

简单实现逻辑斯蒂回归

学习几个小时能通过考试

  1. import torch
  2. import torch.nn.functional as F
  3. import numpy as np
  4. import matplotlib.pyplot as plt
  5. x_data = torch.tensor([[1.0],[2.0],[3.0]]) #x设置为tensor类型数据
  6. y_data = torch.tensor([[0.0],[0.0],[1.0]]) #y设置为tensor类型数据
  7. class LogisticRegressionModel(torch.nn.Module):
  8. def __init__(self):
  9. super(LogisticRegressionModel,self).__init__()
  10. self.linear = torch.nn.Linear(1,1)
  11. def forward(self,x):
  12. y_pred = F.sigmoid(self.linear(x))
  13. return y_pred
  14. model = LogisticRegressionModel()
  15. criterion = torch.nn.BCELoss(size_average=False)
  16. optimizer = torch.optim.SGD(model.parameters(),lr = 0.01)
  17. optimizer = torch.optim.SGD(model.parameters(),lr = 0.01) #定义梯度优化器为随机梯度下降
  18. for epoch in range(10000): #训练过程
  19. y_pred = model (x_data) #向前传播,求y_pred
  20. loss = criterion (y_pred,y_data) #根据y_pred和y_data求损失
  21. print(epoch,loss)
  22. optimizer.zero_grad() #将优化器数值清零
  23. loss.backward() #反向传播,计算梯度
  24. optimizer.step() #根据梯度更新参数
  25. x = np.linspace(0,10,200)
  26. x_t = torch.Tensor(x).view((200,1))
  27. y_t = model (x_t)
  28. y = y_t.data.numpy()
  29. plt.plot(x,y)
  30. plt.plot([0,10],[0.5,0.5],c='r')
  31. plt.xlabel = ('hours')
  32. plt.tlabel = ("Probability of Pass")
  33. plt.show()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/477432?site
推荐阅读
相关标签
  

闽ICP备14008679号