视频指导:https://www.bilibili.com/video/BV1Y7411d7Ys?p=6

一些数据集

在pytorch框架下,里面面有配套的数据集,pytorch里面有一个torchversion的包,他可以提供相应的,比如MNIST这种很基础的数据集,但是安装的时候这些数据集不会包含在包里面,所以需要下载,具体代码以及解释如下:

import torchvision
train_set = torchvision.datasets.MNIST(root= '../dataset/mnist', train=True, download=True) //root后面表示把数据集安装在什么位置,train表示是要训练集还是测试集,download表示是否需要下载(如果没有下载就需要下载)
text_set = torchvision.datasets.MNIST(root= '../dataset/mnist', train=False, download=True)

还有一个叫做CIFAR-10 的数据集,训练集里面包含了5w个样本,测试集包含了1w个样本,内容就是一些图片,被分成了十类,分别表示不同的事务

import torchvision
train_set = torchvision.datasets.CIFAR10(...)
text_set = torchvision.datasets.CIFAR10(...)

逻辑斯蒂回归

首先我们自己设计几个数据

x_data = torch.Tensor([[1.0], [2.0], [3.0]])
y_data = torch.Tensor([[0], [0], [1]])

然后开始设计模型

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

这里和昨天不一样的地方在于forward里面使用了逻辑斯蒂回归

然后是优化器和损失函数

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

损失函数采用的是BCE,就是交叉熵损失

开始训练

for epoch in range(1000):
y_pred = model(x_data)
loss = critertion(y_pred,y_data)
print(epoch, loss.item()) optimizer.zero_grad()
loss.backward()
optimizer.step()

结果可视化

用matplotlib进行绘图可以使结果可视化,具体代码和解释如下

import numpy as np
import matplotlib.pyplot as plt x = np.linspace(0, 10, 200) //意思就是在0到10之间弄出来两百个点
x_t = torch.Tensor(x).view((200, 1)) //把他变成200行一列的矩阵
y_t = model(x_t) //送入模型
y = y_t.data.numpy() //用numpy接收y_data的数据
plt.plot(x, y) //绘图
plt.plot([0, 10], [0.5, 0.5], c='r') //表示在0到10,0.5到0.5上面画一条线(显然是一条直线)
plt.ylabel('probability of pass')
plt.grid()
plt.show()

总结

第一遍跑有一个警告

UserWarning: nn.functional.sigmoid is deprecated. Use torch.sigmoid instead. warnings.warn

查了一下,把

F.sigmoid(self.hidden(x))
#修改成以下语句
torch.sigmoid(self.hidden(x))

即可

估计是版本问题吧

然后我有魔改了一下代码,具体如下

import torch

x_data = torch.Tensor([[1.0], [2.0], [3.0]])
y_data = torch.Tensor([[0], [0], [1]]) class LogisiticRegressionModel(torch.nn.Module):
def __init__(self):
super(LogisiticRegressionModel, self).__init__()
self.linear = torch.nn.Linear(1, 1) def forward(self,x):
y_pred = torch.sigmoid(self.linear(x))
return y_pred model = LogisiticRegressionModel()
critertion = torch.nn.BCELoss(size_average=False)
optimizer = torch.optim.SGD(model.parameters(), lr=0.01) for epoch in range(50000):
y_pred = model(x_data)
loss = critertion(y_pred,y_data)
print(epoch, loss.item()) optimizer.zero_grad()
loss.backward()
optimizer.step() import numpy as np
import matplotlib.pyplot as plt x = np.linspace(0, 100, 2000)
x_t = torch.Tensor(x).view((2000, 1))
y_t = model(x_t)
y = y_t.data.numpy()
plt.plot(x, y)
plt.plot([0, 100], [0.5, 0.5], c='r')
plt.xlabel('hours')
plt.ylabel('pass')
plt.grid()
plt.show()

最后的结果,我愿称之为,过拟合之王



哈哈哈哈哈,很有意思

  • 总之整个代码编写就分这几步:
  • 准备数据;
  • 设计模型;
  • 构造损失函数和优化器;
  • 训练过程;
  • 打印结果

    熟悉了就可以搞出自己的模型了

【项目实战】pytorch实现逻辑斯蒂回归的更多相关文章

  1. python机器学习实现逻辑斯蒂回归

    逻辑斯蒂回归 关注公众号"轻松学编程"了解更多. [关键词]Logistics函数,最大似然估计,梯度下降法 1.Logistics回归的原理 利用Logistics回归进行分类的 ...

  2. 【转】机器学习笔记之(3)——Logistic回归(逻辑斯蒂回归)

    原文链接:https://blog.csdn.net/gwplovekimi/article/details/80288964 本博文为逻辑斯特回归的学习笔记.由于仅仅是学习笔记,水平有限,还望广大读 ...

  3. 机器学习之LinearRegression与Logistic Regression逻辑斯蒂回归(三)

    一 评价尺度 sklearn包含四种评价尺度 1 均方差(mean-squared-error) 2 平均绝对值误差(mean_absolute_error) 3 可释方差得分(explained_v ...

  4. [置顶] 局部加权回归、最小二乘的概率解释、逻辑斯蒂回归、感知器算法——斯坦福ML公开课笔记3

    转载请注明:http://blog.csdn.net/xinzhangyanxiang/article/details/9113681 最近在看Ng的机器学习公开课,Ng的讲法循循善诱,感觉提高了不少 ...

  5. 【分类器】感知机+线性回归+逻辑斯蒂回归+softmax回归

    一.感知机     详细参考:https://blog.csdn.net/wodeai1235/article/details/54755735 1.模型和图像: 2.数学定义推导和优化: 3.流程 ...

  6. spark机器学习从0到1逻辑斯蒂回归之(四)

      逻辑斯蒂回归 一.概念 逻辑斯蒂回归(logistic regression)是统计学习中的经典分类方法,属于对数线性模型.logistic回归的因变量可以是二分类的,也可以是多分类的.logis ...

  7. 逻辑斯蒂回归(Logistic Regression)

    逻辑回归名字比较古怪,看上去是回归,却是一个简单的二分类模型. 逻辑回归的模型是如下形式: 其中x是features,θ是feature的权重,σ是sigmoid函数.将θ0视为θ0*x0(x0取值为 ...

  8. 逻辑斯蒂回归VS决策树VS随机森林

    LR 与SVM 不同 1.logistic regression适合需要得到一个分类概率的场景,SVM则没有分类概率 2.LR其实同样可以使用kernel,但是LR没有support vector在计 ...

  9. [转]逻辑斯蒂回归 via python

    # -*- coding:UTF-8 -*-import numpydef loadDataSet(): return dataMat,labelMat def sigmoid(inX): retur ...

随机推荐

  1. 步态识别《GaitSet: Regarding Gait as a Set for Cross-View Gait Recognition》2018 CVPR

    Motivation: 步态可被当作一种可用于识别的生物特征在刑侦或者安全场景发挥重要作用.但是现有的方法要么是使用步态模板(能量图与能量熵图等)导致时序信息丢失,要么是要求步态序列连续,导致灵活性差 ...

  2. Java学习dayo4

    分支结构和循环语句 1.包的概念 包就是文件夹 包的命名规范:全小写,域名倒置,不能以点开头或结尾,可以包含点,每存在一个点表示一个子目录 举例:com.baidu.demo 定义包后,包中的java ...

  3. Java开发学习(十二)----基于注解开发依赖注入

    Spring为了使用注解简化开发,并没有提供构造函数注入.setter注入对应的注解,只提供了自动装配的注解实现. 1.环境准备 首先准备环境: 创建一个Maven项目 pom.xml添加Spring ...

  4. Chrome安装Vue.js devtool F12无效

    要安装 vue-devtools-4.1.4_0 链接: https://pan.baidu.com/s/1aeUxKJEUDW0U_i6uuAZFvQ 提取码: 4btc vue-devtools- ...

  5. 一种新的UI测试方法:视觉感知测试

    什么是视觉测试 视觉测试(Visual Testing),主要检查软件用户界面(UI)是否正确显示给所有用户.它检查网页上的每个元素的形状.大小和位置是否符合预期,还检查这些元素是否在不同的设备和浏览 ...

  6. Spring知识点详解

    1.Spring 概述 1.1.Spring 的概念和特点 Spring 是一个轻量级的控制反转(IoC)和面向切面(AOP)的开源容器框架,它是由 Rod Johnson(音乐学博士)所创建,其核心 ...

  7. Note -「Dijkstra 求解 MCMF」

    食用前请先了解 SPFA + Dinic/EK 求解 MCMF. Sol. 总所周知,SPFA 牺牲了.于是我们寻求一些更稳定的算法求解 MCMF. 网络流算法的时间属于玄学,暂且判定为混乱中的稳定. ...

  8. postgres备份与恢复

    一  利用pgAdmin工具进行备份与恢复 pgAdmin是postgres官方的客户端管理工具,可以进行数据库的涉及与维护. 示例:以logs库为例记录操作       1)  右击需要备份的数据( ...

  9. 技术分享 | 在GreatDB分布式部署模式中使用Chaos Mesh做混沌测试

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 1. 需求背景与万里安全数据库软件GreatDB分布式部署模式介绍 1.1 需求背景 混沌测试是检测分布式系统不确定性.建 ...

  10. CF580D Kefa and Dishes (状压DP)

    枚举最后食物 #include <iostream> #include <cstdio> #include <cstring> #include <algor ...