From Binary Regression to Binary Classification

1. The Differences between Regression and Classification

在这里插入图片描述 Through the picture above we can tell the differences between regression and classification. In regression, the output of a model is the predicted value based on input. However, in classification, the output of is the
probability of input which belongs to an exact class.

2. The Analysis of a Binary Classification Problem

The analysis below is based on the picture displayed in the first section.
Since the range of a probability is from 0 to 1, we are supposed to use a function called logistic function to restrict the value.
在这里插入图片描述
The loss function of binary classification is different from the loss function of linear regression because of the appearance of the logistic function.
在这里插入图片描述If y=0,
在这里插入图片描述
If y=1,
在这里插入图片描述
You can see that the closer between y and hat{y}, the smaller will be the loss.

3. The Code

First, import those modules we need later and prepare for the dataset.

import torch
import torch.nn.functional as F
x_data = torch.Tensor([[1.0], [2.0], [3.0]])
y_data = torch.Tensor([[0], [0], [1]])

Second, create a class inheriting from torch.nn module to design model.

class LogisticRegressionModel(torch.nn.Module):
   def __init__(self):
      super(LogisticRegressionModel, self).__init__()
      self.linear = torch.nn.Linear(1, 1)
   def forward(self, x):
      y_pred = F.sigmoid(self.linear(x))
      return y_pred
model = LogisticRegressionModel()

You may be aware that the name of the class is LogisticRegressionModel.
However, it does be designed to solve a binary classification problem.
Third, construct loss and optimizer.

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

Last comes the training cycle.

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()

Here comes the result.
在这里插入图片描述

4. Using Numpy and Matplotlib to Display the Result

Here is the code.

import numpy as np
import matplotlib.pyplot as plt
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()

And here comes the result.
在这里插入图片描述That’s all. Thanks for your attention.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值