时间:2021-05-22
本文实例为大家分享了pytorch实现逻辑回归的具体代码,供大家参考,具体内容如下
一、pytorch实现逻辑回归
逻辑回归是非常经典的分类算法,是用于分类任务,如垃圾分类任务,情感分类任务等都可以使用逻辑回归。
接下来使用逻辑回归模型完成一个二分类任务:
# 使用逻辑回归完成一个二分类任务# 数据准备import torchimport matplotlib.pyplot as pltx1 = torch.randn(365)+1.5 # randn():输出一个形状为size的标准正态分布Tensorx2 = torch.randn(365)-1.5#print(x1.shape) # torch.Size([365])#print(x2.shape) # torch.Size([365])data = zip(x1.data.numpy(),x2.data.numpy()) # 创建一个聚合了来自每个可迭代对象中的元素的迭代器。 x = [1,2,3]pos = []neg = []def classification(data): for i in data: if (i[0] > 1.5+0.1*torch.rand(1).item()*(-1)**torch.randint(1,10,(1,1)).item()): pos.append(i) else: neg.append(i)classification(data)# 将正、负两类数据可视化pos_x = [i[0] for i in pos]pos_y = [i[1] for i in pos]neg_x = [i[0] for i in neg]neg_y = [i[1] for i in neg]plt.scatter(pos_x,pos_y,c = 'r',marker = "*")plt.scatter(neg_x,neg_y,c = 'b',marker = "^")plt.show()# 构造正、负两类数据可视化结果如上图所示# 构建模型import torch.nn as nnclass LogisticRegression(nn.Module): def __init__(self): super(LogisticRegression, self).__init__() self.linear = nn.Linear(2,1) self.sigmoid = nn.Sigmoid() def forward(self,x): return self.sigmoid(self.linear(x))model = LogisticRegression()criterion = nn.BCELoss()optimizer = torch.optim.SGD(model.parameters(),0.01)epoch = 5000features = [[i[0],i[1]] for i in pos]features.extend([[i[0],i[1]] for i in neg]) #extend 接受一个参数,这个参数总是一个 list,并且把这个 list 中的每个元素添加到原 list 中features = torch.Tensor(features) # torch.Tensor 生成单精度浮点类型的张量label = [1 for i in range(len(pos))]label.extend(0 for i in range(len(neg)))label = torch.Tensor(label)print(label.shape)for i in range(500000): out = model(features) #print(out.shape) loss = criterion(out.squeeze(1),label) optimizer.zero_grad() loss.backward() optimizer.step() # 分类任务准确率 acc = (out.ge(0.5).float().squeeze(1)==label).sum().float()/features.size()[0] if (i % 10000 ==0): plt.scatter(pos_x, pos_y, c='r', marker="*") plt.scatter(neg_x, neg_y, c='b', marker="^") weight = model.linear.weight[0] #print(weight.shape) wo = weight[0] w1 = weight[1] b = model.linear.bias.data[0] # 绘制分界线 test_x = torch.linspace(-10,10,500) # 500个点 test_y = (-wo*test_x - b) / w1 plt.plot(test_x.data.numpy(),test_y.data.numpy(),c="pink") plt.title("acc:{:.4f},loss:{:.4f}".format(acc,loss)) plt.ylim(-5,3) plt.xlim(-3,5) plt.show()附上分类结果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Python实现的逻辑回归算法。分享给大家供大家参考,具体如下:使用python实现逻辑回归UsingPythontoImplementLogis
本文实例为大家分享了pytorch实现线性回归以及多元回归的具体代码,供大家参考,具体内容如下最近在学习pytorch,现在把学习的代码放在这里,下面是gith
本文实例为大家分享了pytorch使用Variable实现线性回归的具体代码,供大家参考,具体内容如下一、手动计算梯度实现线性回归#导入相关包importtor
逻辑回归是机器学习中很简答的一个栗子,这篇文章就是要介绍如何使用tensorflow实现一个简单的逻辑回归算法。逻辑回归可以看作只有一层网络的前向神经网络,并且
pytorch实现线性回归代码练习实例,供大家参考,具体内容如下欢迎大家指正,希望可以通过小的练习提升对于pytorch的掌握#随机初始化一个二维数据集,使用朋