文章目录

  • 前言
  • 一、One-hot是什么?
  • 二、应用场景
  • 三、One-hot创建方法(3种)
    • 1.for 循环生成
    • 2.arange遍历方法
    • 3.scatter_方法
  • 四、总结

前言

今天闲来无事,因为学习人工智能的道路上遇到了很多问题,纠结从那个问题开始解决?但是不要紧,我已经有答案了。所以,我决定总结一下最近学习知识要点,以缓解紧张的学习气氛。哈哈哈~~,来吧,进入正题。

/font>


提示:讲一下数据预处理之One-Hot。以下是本篇文章正文内容,下面案例可供参考

一、One-hot是什么?

示例:对于这个问题,之前谷歌了一下,还涉及寄存器了(one-hot编码是N位状态寄存器为N个状态进行编码的方式)。。真的无语。这里不说那些很底层的,我们只需要了解one-hot编码是将类别变量转换为机器学习算法中容易处理的一种形式!
概念太抽象了,对太抽了,那么从实际例子来说明。
如下我们有两个特征:

我们看到有两个特证名为:animal与food,解释一下两列值意思,第一列代表的是动物的名字,第二列是食物的个数,比如第一行cat 2 描述为猫吃了两个食物,这里是测试数据,主要是想通过,这些数据给予直观的认识及实际操作。
而对上述数据做one-hot编码后得结果为:

animal列数据类型是字符串,而第二列是数值型,如果我们能将这些特征值用0/1表示,是不是在机器学习中,对这些非连续值非常有帮助。综上,我们推论出,如果你在处理的数据中,通过特征工程这一步操作,能够将特征的类型判别出来,哪些是连续的,哪些是非连续的,那么我们就可以对它进行特殊处理,比如此处的one-hot编码!

二、应用场景

在模型训练中,常常会根据损失函数的大小作为训练效果的好坏。通常会使用:

  1. 平均绝对误差(MAEloss),
  2. 均方误差(MSEloss),需要做one-hot以及加入softmax输出函数。
  3. 二分类交叉熵(BCELoss),需要做one-hot以及加入softmax输出函数。
  4. 二分类交叉熵(BCEWithLogitsLoss,对输入值自动做sigmoid,但需要做one-hot。
  5. 多分类交叉熵(CrossEntropyLoss),自动对输入数据做one-hot和softmax。

三、One-hot创建方法(3种)

1.for 循环生成

代码如下(示例):

 def one_hot(w,h,arr):zero_arr = np.zeros([w,h])#w行,h列for i in range(w):j = int(arr[i])zero_arr[i][j]=1return zero_arrarr = np.array([5, 2, 8, 6])one_hot(len(arr),max(arr)+1,arr)

2.arange遍历方法

该方法前提是:arr = np.array([5, 2, 8, 6])是这样的类型,即数组类型。
代码如下(示例):

#法1
arr = np.array([5, 2, 8, 6])
zero_arr = torch.zeros(len(arr),max(arr)+1)
zero_arr[torch.arange(len(arr)),arr]=1   #arange非常类似range函数
#或者一步到位
#法2
torch.zeros(len(arr), max(arr) + 1)[torch.arange(len(arr)),arr]=1

# 一级标题

3.scatter_方法

该方法前提是:arr = torch.tensor([5, 2, 8, 6])是这样的类型,即张量(tensor)类型。
代码如下(示例):

arr = torch.tensor([5, 2, 8, 6])torch_out =torch.zeros(len(arr),max(arr)+1).scatter_(1,arr.reshape(-1,1),1)
'''scatter_(input, dim, index, src)可以理解成放置元素或者修改元素
dim:沿着哪个维度进行索引. 一般为1或-1
index:用来 scatter 的元素索引
src:用什么内容来修改交换,可以是一个标量或一个张量'''
'''reshape(-1,1)转换成1列:
reshape(1,-1)转化成1行:for
reshape(2,-1)转换成两行:
reshape(-1,2)转化成两列''';

四、总结

提示:这里对文章进行总结:
1.多分类交叉熵CrossEntropyLoss(),不需要做ong-hot,自动做onehot和softmax。
2.均方差MSELoss,需要做onehot和输出函数。
3.二分类交叉熵BCELoss(),需要做onehot和输出函数。
4.二分类交叉熵BCEWithLogitsLoss,onehot,但不用做输出函数。

四、One-hot和损失函数的应用相关推荐

  1. 人脸验证(四)--CenterLoss,损失函数改进原因

    转 人脸验证(四)--CenterLoss 2017年12月10日 11:44:31 EasonApp 阅读数:918 有点纠结,实质上本文只是在深度学习框架下人脸识别损失函数的改进.但我还是把它归类 ...

  2. yolov5 优化方法(四)修改bbox损失函数(补充EIOU,SIOU)

    [参考文档]江大白的yolo解析 后面会给出我的完整代码,先来分段看看! 转化格式 if x1y1x2y2: # x1, y1, x2, y2 = box1b1_x1, b1_y1, b1_x2, b ...

  3. 入门卷积神经网络(四)误差函数(损失函数)

    误差函数(损失函数) 监督学习的神经网络需要一个函数来测度模型的输出值p和真实因变量值y之间的差异,一般这种差异被称为残差或者误差. 但一个模型完美时(虽然不存在),其误差为0.当模型存在问题时,误差 ...

  4. 机器学习之常见的损失函数(loss function)

    解决一个机器学习问题主要有两部分:数据和算法.而算法又有三个部分组成:假设函数.损失函数.算法优化.我们一般在看算法书或者视频教学时,更多的是去推算或者说参数估计出其假设函数,而往往不太注重损失函数, ...

  5. Lesson 4.2 逻辑回归参数估计:极大似然估计、相对熵与交叉熵损失函数

    文章目录 一.逻辑回归参数估计基本思路 1. 构建损失函数 2. 损失函数求解 二.利用极大似然估计进行参数估计 三.熵.相对熵与交叉熵 1. 熵(entropy)的基本概念与计算公式 2. 熵的基本 ...

  6. 【人脸识别】千变万化的人脸识别 REID损失函数总结

    如果有不对的地方,欢迎指正!!!只是个人理解. 一.引言 人脸识别,REID都是经过卷积神经网络提取图像的特征向量,再进行比对的过程.神经网络的选择,可以选择经典的或者当下流行的,这里主要总结下千变万 ...

  7. 损失函数、代价函数与目标函数

    定义 损失函数(Loss Function):是定义在单个样本上的,用来评价模型的预测值和真实值不一样的程度,指一个样本的误差. 代价函数(Cost Function):定义在整个训练集上的,是指所有 ...

  8. 损失函数(lossfunction)的全面介绍(简单易懂版)

    一:什么是损失函数: 简单的理解就是每一个样本经过模型后会得到一个预测值,然后得到的预测值和真实值的差值就成为损失(当然损失值越小证明模型越是成功),我们知道有许多不同种类的损失函数,这些函数本质上就 ...

  9. 线性回归、逻辑回归及SVM

    1,回归(Linear Regression) 回归其实就是对已知公式的未知参数进行估计.可以简单的理解为:在给定训练样本点和已知的公式后,对于一个或多个未知参数,机器会自动枚举参数的所有可能取值(对 ...

最新文章

  1. R语言使用ggplot2包的快速可视化函数qplot绘制分组散点图(添加平滑曲线与标准差带)实战
  2. YOU SAY quot;THE RULE IS HEREquot;,BUT I SAY quot;WHY?quot;
  3. 【Git】Git 基础命令 ( 查看提交记录 git log | 版本回滚 git reset | 撤销回滚 git reflog )
  4. java中String相等问题
  5. 公交导航准确度大PK:高德地图百度地图谁更精确
  6. Ubuntu 13.04 安装最新版本的Nginx
  7. I00003 贝尔三角形
  8. 影响力最大化——CELF算法的简介与python实现
  9. uc通讯不成功php版本过高,UC通信失败怎么办
  10. 戴尔计算机无法安装Win10,dell电脑安装win10 识别不了硬盘
  11. hdu 1069 Monkey and Banana 【动态规划】
  12. 寒假每日一题 1 : 笨拙的手指 java
  13. 解决error:torch has an invalid wheel,.dist -info directory not fount
  14. 关于STL中的greaterT()和lessT()
  15. 新零售模式对传统批发零售业在商业模式与技术上的影响
  16. 血色先锋队(dfs)
  17. vue3.0+ts 找不到模块“./XXX.vue”或其相应的类型声明。
  18. XS7320 国产高性能IPC
  19. 注销账号功能(账号保留一个月)
  20. Win11安卓子系统导致安卓模拟器无法启动

热门文章

  1. spring boot整合spring security笔记
  2. vue.js安装过程(npm安装)
  3. Leetcode 50. Pow(x, n)
  4. C++二维数组名与数组指针的思考
  5. c语言的求素数算法,C语言求素数的算法
  6. 模拟频率和数字频率的区别
  7. i7 7700hq安装Linux,黑苹果安装火影金刚4K VULCAN JinGang GTX i7-7700HQ 独显驱动 Hackintosh...
  8. c语言程序开平方,关于开平方的c程序
  9. win7调整屏幕亮度_番禺区户外LED屏幕求购,区LCD屏幕解决方案
  10. mysql 事务 注意 优化_MySQL日常SQL优化注意事项