Pytorch实现Logistic回归二分类

摘要:本文主要介绍使用深度学习框架Pytorch实现简单的Logistic回归模型,进而实现简单的分类问题。

一.逻辑回归简述

逻辑回归实质上是线性回归,把特征线性求和(一阶)之后再使用Sigmoid函数将结果映射到[0,1]区间,得到分类结果为1的概率大小。具体表达式如下:

h(w,x) =1/(1+exp(-(w*x+b)))

其中x为特征向量,可以表示为[x1,x2,....,xN],的取值范围为[0,1]表示分类结果为1的概率大小。通过公式可以看出,逻辑回归可以理解为单层的全连接网络加上sigmoid激活函数的神经网络结构,具体如下:

其中f(x)为sigmoid函数,函数图像为:

二.Pytorch简述

Pytorch是一个Python优先的深度学习框架,支持GPU加速、支持动态图构建。你可以将它理解为类似Numpy的数学库,换句话理解,Pytorch是GPU上运行的Numpy,主要包的模块有:torch.autograd支持动态微分;torch.nn支持建立神经网络;torch.optim定义了各种优化函数;torch.multiprocessing支持多线程;torch.utils支持数据导入或处理。详情可以参见:http://pytorch.org

三.数据简述

本文实现逻辑回归的二分类,主要使用UCI的机器学习数据,German信用数据,选择numeric类型的数据。数据地址:https://archive.ics.uci.edu/ml/machine-learning-databases/statlog/german/。 数据主要有24个属性,两个类别(1表示GoodMan, 2表示Bad Man).数据格式如下:(1000*25,1000组数据,24个属性,1个类别)

四.具体实现

(1) 数据预处理

对于数据主要进行去中心化和标准化处理,避免不同属性由于数值大小不同对分类结果产生偏差。

(2) 模型定义

使用Pytorch的nn模块,定义LR模型,使用Linear定义线性网络,再使用Functional的sigmoid函数来激活,具体如下。

(3) 训练与测试

训练过程:定义损失函数为交叉熵函数,优化算法为SGD算法,使用backward进行迭代优化

测试过程:

(4) 结果

原文发布于微信公众号 - CodeInHand(CodeInHand)

原文发表时间:2018-02-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏贾志刚-OpenCV学堂

VGG卷积神经网络模型解析

一:VGG介绍与模型结构 VGG全称是Visual Geometry Group属于牛津大学科学工程系,其发布了一些列以VGG开头的卷积网络模型,可以应用在人脸...

4434
来自专栏人工智能LeadAI

计算机视觉处理三大任务:分类、定位和检测

该笔记是以斯坦福cs231n课程(深度学习计算机视觉课程)的python编程任务为主线,展开对该课程主要内容的理解和部分数学推导。这篇学习笔记是关于计算机视觉处...

5877
来自专栏CVer

深度学习的卷积算法指南[1] 卷积和池化简介

本文简要回顾了卷积神经网络(CNN)的主要组成部分,即离散卷积(discrete convolutions)和池化(pooling)。

3915
来自专栏深度学习自然语言处理

【长文详解】卷积神经网络常见架构AlexNet、ZFNet、VGGNet、GoogleNet和ResNet模型的理论与实践

目前的常见的卷积网络结构有AlexNet、ZF Net、VGGNet、Inception、ResNet等等,接下来我们对这些架构一一详解。

4484
来自专栏数据小魔方

机器学习笔记——特征标准化

数据标准化是为了消除不同指标量纲的影响,方便指标之间的可比性,量纲差异会影响某些模型中距离计算的结果。

1073
来自专栏智能算法

SVM 的“核”武器

一、上一次我们讲到关于SVM通过拉格朗日乘子法去求解的部分,引入乘子 得到下面的式子: ? 我们令 ? 当所有的约束条件满足时,我们得到的 ? ,而之前的优...

3346
来自专栏贾志刚-OpenCV学堂

使用OpenCV与sklearn实现基于词袋模型(Bag of Word)的图像分类预测与搜索

基于OpenCV实现SIFT特征提取与BOW(Bag of Word)生成向量数据,然后使用sklearn的线性SVM分类器训练模型,实现图像分类预测。实现基于...

3983
来自专栏瓜大三哥

竞争型神经网络续1

1.竞争神经网络函数 1.1创建函数 1.1.1 newc函数 newc函数用于创建一个竞争层,这是一个旧版本的函数,现在用competlayer函数代替。函数...

37010
来自专栏人工智能LeadAI

黑猿大叔-译文 | TensorFlow实现Batch Normalization

原文:Implementing Batch Normalization in Tensorflow(https://r2rt.com/implementing-...

5008
来自专栏杨熹的专栏

详解 LSTM

今天的内容有: LSTM 思路 LSTM 的前向计算 LSTM 的反向传播 关于调参 ---- LSTM 长短时记忆网络(Long Short Term Mem...

4555

扫码关注云+社区