二分类问题的交叉熵损失函数;

在二分类问题中,损失函数为交叉熵损失函数。对于样本(x,y)来讲,x为样本 y为对应的标签。在二分类问题中,其取值的集合可能为{0,1},我们假设某个样本的真实标签为yt,该样本的yt=1的概率为yp,则该样本的损失函数为:

如果对于整个数据集上的模型而言:其损失函数就是所有样本的点的损失函数的平均值。

多分类的问题的函数交叉熵损失函数:

在多分类问题中,损失函数也是交叉熵损失函数,对于样本(x,y)来讲,y是真实的标签,预测标签为所有标签的集合,我们假设有k个标签值,第i个样本预测为第K个标签的概率为pi,k,一共有N个样本,则总的数据集损失函数为:

下面是二分类和多分类问题的代码:利用sklearn库编写

from sklearn.metrics import log_loss

#from sklearn.preprocessing import LabelBinarizer

from math import log

y_true = [0,1]

y_pred = [[.48,.52],[.48,.52]]

sk_log_loss = log_loss(y_true,y_pred)

print('Loss by sklearn: %s.'% sk_log_loss)

loss = 0

for lable,prob in zip(y_true,y_pred):

loss -= (lable * log(prob[0])+(1-lable)*log(1-prob[1]))

loss = loss/len(y_true)

print('loss by equation: %s.'%loss)

from sklearn.metrics import log_loss

from math import log

y_true = [0,0,1,1]

y_pred = [[.9,.1],[.8,.2],[.2,.8],[.3,.7]]

sk_log_loss = log_loss(y_true,y_pred)

print('Loss by sklearn: %s.'% sk_log_loss)

loss = 0

for lable,prob in zip(y_true,y_pred)

Loss -= (lable * log(prob[0])+(1-lable)*log(1-prob[1]))

Loss = Loss/len(y_true)

print('Loss by equation: %s.'%Loss)

from sklearn.metrics import log_loss

from sklearn.preprocessing import LabelBinarizer

from math import log

y_true = ['1', '4', '5'] # 样本的真实标签

y_pred = [[0.1, 0.6, 0.3, 0, 0, 0, 0, 0, 0, 0],

[0, 0.3, 0.2, 0, 0.5, 0, 0, 0, 0, 0],

[0.6, 0.3, 0, 0, 0, 0.1, 0, 0, 0, 0]] # 样本的预测概率

labels = ['0','1','2','3','4','5','6','7','8','9'] # 所有标签

# 利用sklearn中的log_loss()函数计算交叉熵

sk_log_loss = log_loss(y_true, y_pred, labels=labels)

print("Loss by sklearn is:%s." %sk_log_loss)

# 对样本的真实标签进行标签二值化

lb = LabelBinarizer()

print(lb.fit(labels))

transformed_labels = lb.transform(y_true)

print(transformed_labels)#转化代码为矩阵

N = len(y_true) # 样本个数

K = len(labels) # 标签个数

eps = 1e-15 # 预测概率的控制值

Loss = 0 # 损失值初始化

for i in range(N):

for k in range(K):

# 控制预测概率在[eps, 1-eps]内,避免求对数时出现问题

if y_pred[i][k] < eps:

y_pred[i][k] = eps

if y_pred[i][k] > 1-eps:

y_pred[i][k] = 1-eps

# 多分类问题的交叉熵计算公式

Loss -= transformed_labels[i][k]*log(y_pred[i][k])

Loss /= N

print("Loss by equation is:%s." % Loss)

Softmax机器学习重要的工具详细推导公式和实现代码深度学习遵循“垃圾入,垃圾出”(“garbage in, garbage out”)的基本法则Andrej Karpathy 在Train AI 演讲:改善数据集

二分类交叉熵损失函数python_二分类问题的交叉熵损失函数多分类的问题的函数交叉熵损失函数求解...相关推荐

  1. Scikit-learn数据预处理分类变量编码之标签二值化

    Scikit-learn数据预处理分类变量编码之标签二值化 1 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理. 2 名义变量标签二值化 ...

  2. 二维分类教案_大班数学二维分类教案

    学习将分类后的物品再次按类摆放并设计标志记录分类.以下是小编收集整理的大班数学二维分类教案相关资料,欢迎阅读! 大班数学二维分类教案1 活动目标: 1.学会服装可以分为上衣和裤子,食品可以分为水果和蔬 ...

  3. 二维分类教案_大班教案二维分类

    准备材料:1.三级分类组合板一套.2.压膜图形一套:大小不等.颜色不一的圆形.正方形.长方形.梯形.六边形.三角形.3.标记卡:颜色标记(红色.非红色)各一张,图形标记(圆形.非圆形)各两张.4.装图 ...

  4. R语言vtreat包的mkCrossFrameCExperiment函数交叉验证构建数据处理计划并进行模型训练、通过显著性进行变量筛选(删除相关性较强的变量)、构建多变量模型、转化为分类模型、模型评估

    R语言vtreat包的mkCrossFrameCExperiment函数交叉验证构建数据处理计划并进行模型训练.通过显著性进行变量筛选(删除相关性较强的变量).构建多变量模型.转化为分类模型.模型评估 ...

  5. R语言构建xgboost文本分类模型(bag of words):xgb.cv函数交叉验证确定xgboost模型的最优子树个数、交叉验证获取最优子树之后构建最优xgboost模型并评估模型文本分类效能

    R语言构建xgboost文本分类模型(bag of words):xgb.cv函数交叉验证确定xgboost模型的最优子树个数.交叉验证获取最优子树之后构建最优xgboost模型并评估模型文本分类效能 ...

  6. 交叉熵损失函数、修正Huber损失、极大似然估计、负对数似然、似然与交叉熵、KL散度

    交叉熵损失函数.修正Huber损失.极大似然估计.负对数似然.似然与交叉熵.KL散度 目录

  7. 二叉搜索时与双向链表python_剑指Offer(二十六) 二叉搜索树和双向链表

    题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. 思路以及解答 主要是使用递归,设置一个head和end,head只在第一次 ...

  8. 二叉搜索时与双向链表python_【剑指offer】26 二叉搜索树与双向链表

    - 题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. - 解题思路 递归 - Java实现 /**public class ...

  9. 人脸识别-Loss-2016:Large Margin Softmax Loss【Margin:角度分类边界之间的空白角度区域】【增大Margin来提高分类精度】【缺陷:无法处理W_i≠W_j的情况】

    尽管传统的softmax在卷积网络作为最常用的监督学习组件,但是他不能促进判别性强的特征的学习,在这篇论文里面首先提出一种基于Margin的L-Softmax损失函数,可以明确地促使学习到的特征具有类 ...

最新文章

  1. Python | [a for b in c for a in b]的用法
  2. JS Math.sin() 与 Math.cos()
  3. [PLAYING QTP] Part2—Record
  4. 软考网络工程师笔记-综合知识3
  5. java excel导出2007_java操作excel文件,实现批量导出,和导入
  6. 关于ORACLE MYSQL NOT IN和NOT exists需要注意的 NULL值
  7. [回帖整理] 创业难
  8. 瞄准千亿工业物联网市场,有人物联网为2万企业级用户提供完整可靠方案
  9. 新辰:雕爷与张朝阳分享创业感悟 给90后创业者打鸡血共勉
  10. 【HTML5】初识前端页面结构与基本标签
  11. 程序员转行干什么好呢
  12. 我与CSDN的2021 --从路人到一名万粉博主的自述
  13. 怎么下载优酷视频呢,你可以这样下
  14. 关于BP神经网络模型的学习思考
  15. python----引用其他py文件中的函数
  16. 展锐android r kernel 快速编译
  17. ios百度地图更改罗盘指南针位置
  18. Metallurgical and Materials Transactions A (MMTA)这个期刊怎么样?
  19. Mybatis学习日记(四)——动态SQL第一部分
  20. 【大数据24小时】贵阳用大数据使森林火灾受害率降低到0.0019%

热门文章

  1. Word 高级查找、通配符查找,与格式替换
  2. Google使用全攻略(二)
  3. NOIP2018提高组初赛选择题解析
  4. 苏嵌//杨曼曼//0723
  5. 毕业设计 嵌入式 病房呼叫系统
  6. USART库函数中用于清除标志位的一些函数,如读DR寄存器的值清除标志位
  7. 解决errors and 0 warnings potentially fixable with the `--fix` option.问题
  8. 利用iframe下载文件
  9. 罗素投资与Hamilton Lane建立战略合作伙伴关系,加速提升私募市场能力
  10. 微软推出移动手机软件Communicator Mobile