当前位置: 首页 > news >正文

N1——one-hot编码

  • 🍨 本文为🔗365天深度学习训练营中的学习记录博客
  • 🍖 原作者:K同学啊

txt文件:

比较直观的编码方式是采用上面提到的字典序列。
例如,对于一个有三个类别的问题,可以用1、2和3分别表示这三个类别。
但是,这种编码方式存在一个问题,就是模型可能会错误地认为不同类别之间存在一些顺序或距离关系
而实际上这些关系可能是不存在的或者不具有实际意义的,为了避免这种问题,引入了one-hot编码(也称独热编码)。
one-hot编码的基本思想是将每个类别映射到一个向量,其中只有一个元素的值为1,其余元素的值为0。
这样,每个类别之间就是相互独立的,不存在顺序或距离关系。
例如,对于三个类别的情况,可以使用如下的one-hot编码:
这是K同学啊的“365天深度学习训练营”教案内容

代码:

1.准备数据

import torch
import torch.nn.functional as F
import jieba# 示例中文文本
texts = ['比较直观的编码方式是采用上面提到的字典序列。',
'例如,对于一个有三个类别的问题,可以用1、2和3分别表示这三个类别。',
'但是,这种编码方式存在一个问题,就是模型可能会错误地认为不同类别之间存在一些顺序或距离关系',
'而实际上这些关系可能是不存在的或者不具有实际意义的,为了避免这种问题,引入了one-hot编码(也称独热编码)。',
'one-hot编码的基本思想是将每个类别映射到一个向量,其中只有一个元素的值为1,其余元素的值为0。',
'这样,每个类别之间就是相互独立的,不存在顺序或距离关系。',
'例如,对于三个类别的情况,可以使用如下的one-hot编码:',
'这是K同学啊的“365天深度学习训练营”教案内容']

2.中文分词(用jieba)

# 使用结巴分词进行分词
tokenized_texts = [list(jieba.cut(text)) for text in texts]

3.构建词汇表


# 构建词汇表
word_index = {}
index_word = {}
for i, word in enumerate(set([word for text in tokenized_texts for word in text])):word_index[word] = iindex_word[i] = word

4.文本转整数序列

# 将文本转化为整数序列
sequences = [[word_index[word] for word in text] for text in tokenized_texts]

5.转换为one-hot编码

# 获取词汇表大小
vocab_size = len(word_index)# 将整数序列转化为one-hot编码
one_hot_results = torch.zeros(len(texts), vocab_size)
for i, seq in enumerate(sequences):one_hot_results[i, seq] = 1# 打印结果
print("词汇表:")
print(word_index)
print("\n文本:")
print(texts)
print("\n分词结果")
print(tokenized_texts)
print("\n文本序列:")
print(sequences)
print("\nOne-Hot编码:")
print(one_hot_results)

总结:

One-Hot 编码简介

在机器学习和深度学习中,分类数据(如类别标签、文本词汇)通常是非数值型的,而模型只能处理数值型输入。因此,我们需要将这些离散的类别转换为数值形式。

比如,我们有三个类别:猫、狗、鸟,如果用 123 表示:

  • 模型可能会误认为“狗”比“猫”大,“鸟”比“猫”远两倍……

  • 这引入了人为的顺序或距离关系,而实际上这些类别是平等且互斥的。

解决方案:One-Hot 编码(独热编码)

核心思想
将每个类别映射成一个二进制向量,向量长度等于类别总数(词汇表大小),其中只有一个位置是1,其余都是0

http://www.lryc.cn/news/608607.html

相关文章:

  • ABAP SQL更新DB小技巧 WITH INDICATORS
  • [硬件电路-151]:数字电路 - 模拟电路与数字电路的本质
  • MySQL Redo Log
  • GitLab 代码管理平台部署及使用
  • lua中 list.last = last 和list[last]=value区别
  • JavaScript:编程世界中的“语盲”现象
  • 回归的wry
  • 关于vllm【常见问题解决方案】
  • vllm0.8.5:自定义聊天模板qwen_nonthinking.jinja,从根本上避免模型输出<think>标签
  • 【python实用小脚本-169】『Python』所见即所得 Markdown 编辑器:写完即出网页预览——告别“写完→保存→刷新”三连
  • k8s+isulad 国产化技术栈云原生技术栈搭建1-VPC
  • OSPF HCIP
  • Starrocks ShortCircuit短路径的调度
  • 华为云云服务高级顾问叶正晖:华为对多模态大模型的思考与实践
  • 基于云模型的模糊综合风险评估Matlab代码
  • Matlab 高斯牛顿法拟合曲线
  • K8S部署ELK(四):部署logstash
  • MATLAB小波分析工具包进行时间序列的小波功率谱分析
  • 后端研发转型爬虫实战:Scrapy 二开爬虫框架的避坑指南
  • 量子物理学的前沿意义虚无、形式混乱
  • 0803 思维导图+小项目
  • Python爬虫实战:研究awesome-python工具,构建技术资源采集系统
  • uniapp 跨端开发
  • 机器学习——下采样(UnderSampling),解决类别不平衡问题,案例:逻辑回归 信用卡欺诈检测
  • 什么是shebang
  • Java基础:代码块/内部类/Lambda函数/常用API/GUI编程
  • JavaEE初阶第十三期:解锁多线程,从 “单车道” 到 “高速公路” 的编程升级(十一)
  • 自动驾驶中的传感器技术20——Camera(11)
  • 【MATLAB】(六)多项式的创建与四则运算
  • TCP-单线程版本