关于simplifyweibo_4_moods数据集的分类问题

本来打算用情感分类数据集拿Transformer模型来练练手,发现训练效果并不好。当我分析了这个数据集的标签后发现问题了:

  1. 查看标签的分布:
import pandas as pd# 先直接读取数据,不进行后续处理
data_file = '~/data/simplifyweibo_4_moods.csv'
df = pd.read_csv(data_file)
print(df.head()) 
df['label'].value_counts().sort_index()

输出如下:

   label                                             review
0      0  啊呀呀!要死啦!么么么!只穿外套就好了,我认为里面那件很多余啊周小伦喜歡 你各種 五角星的...
1      0  嗯……既然大姚通知了……那我也表示下收到……姚,你知道吗?假如外星人入侵地球,只要摧毁我们的...
2      0                                  风格不一样嘛,都喜欢!最喜欢哪张?
3      0  好呀,试试D .I .Y .去死皮面膜1.将燕麦片加水中浸泡6小时,加入木瓜牛奶搅拌。2.放...
4      0  张老师,谢谢侬的信任!粉丝多少无所谓重在质地近日发现一个现象——他加了你关注,你回加后,他立...
label
0    199496
1     51714
2     55267
3     55267
Name: count, dtype: int64

这样看确实没啥问题,也正如网上所说的,标签的与id的对应是:

'喜悦': 0,
'愤怒': 1,
'厌恶': 2,
'低落': 3

但是使用代码:df.drop_duplicates(subset=['review']) 根据评论数据进行过滤,发现标签3消失了。
2. 查看代码分布:

from sklearn.model_selection import train_test_split# 首先检查原始数据中的标签分布
print("原始数据中的标签分布:")
raw_df = pd.read_csv(data_file)
print(raw_df['label'].value_counts().sort_index())
print("原始数据中的唯一标签:", raw_df['label'].unique())# 检查标签类型
print("\n标签的数据类型:", raw_df['label'].dtype)# 读取数据并进行基本清洗
print("\n应用数据清洗后:")
df = pd.read_csv(data_file).dropna(subset=['review','label'])
print("1. 删除空值后的标签分布:")
print(df['label'].value_counts().sort_index())# 删除重复的评论
df = df.drop_duplicates(subset=['review'])
print("\n2. 删除重复评论后的标签分布:")
print(df['label'].value_counts().sort_index())# 检查是否有label为3的数据
if 3 not in df['label'].unique():print("\n警告:数据清洗后没有label为3的数据!")# 查找原因:检查label为3的数据是否都有空值或重复label3_raw = raw_df[raw_df['label'] == 3]print(f"原始数据中label为3的样本数:{len(label3_raw)}")label3_null = label3_raw['review'].isna().sum()print(f"其中有空值的样本数:{label3_null}")# 检查是否所有label为3的样本都是重复的temp_df = raw_df.dropna(subset=['review','label'])label3_after_dropna = temp_df[temp_df['label'] == 3]print(f"删除空值后label为3的样本数:{len(label3_after_dropna)}")# 检查重复情况all_reviews = set(temp_df['review'])label3_reviews = set(label3_after_dropna['review'])unique_label3_reviews = label3_reviews - (all_reviews - label3_reviews)print(f"label为3的唯一评论数:{len(unique_label3_reviews)}")print(f"label为3的评论与其他标签重复的数量:{len(label3_reviews) - len(unique_label3_reviews)}")# 确保label列是整数类型
df['label'] = df['label'].astype(int)# 如果需要保留label为3的数据,可以修改去重策略
# 例如:只在相同标签内去重,而不是跨标签去重
def preserve_label3(raw_df):# 按标签分组,然后在每个组内去重groups = []for label, group in raw_df.dropna(subset=['review','label']).groupby('label'):# 在每个标签组内去重group_dedup = group.drop_duplicates(subset=['review'])groups.append(group_dedup)# 合并所有组return pd.concat(groups)# 应用新的去重策略
print("\n使用修改后的去重策略:")
df_preserved = preserve_label3(raw_df)
print(df_preserved['label'].value_counts().sort_index())
print("修改后的唯一标签:", df_preserved['label'].unique())# 使用修改后的数据集
df = df_preserved# 查找相同评论对应不同标签的数据
print("\n查找相同评论对应不同标签的数据:")
raw_df_clean = raw_df.dropna(subset=['review','label'])# 找出重复的评论
duplicate_reviews = raw_df_clean[raw_df_clean.duplicated(subset=['review'], keep=False)]# 按评论分组,找出每个评论对应的不同标签
review_label_groups = duplicate_reviews.groupby('review')['label'].unique()# 筛选出有多个不同标签的评论
multi_label_reviews = review_label_groups[review_label_groups.apply(len) > 1]print(f"有{len(multi_label_reviews)}条评论对应多个不同的标签")# 显示前10个多标签评论的例子
if len(multi_label_reviews) > 0:print("\n以下是前10个多标签评论的例子:")for i, (review, labels) in enumerate(multi_label_reviews.items()):if i >= 10:breakprint(f"评论: {review[:50]}{'...' if len(review) > 50 else ''}")print(f"对应的标签: {labels}")print("-" * 50)

输出如下:

原始数据中的标签分布:
label
0    199496
1     51714
2     55267
3     55267
Name: count, dtype: int64
原始数据中的唯一标签: [0 1 2 3]标签的数据类型: int64应用数据清洗后:
1. 删除空值后的标签分布:
label
0    199496
1     51714
2     55267
3     55267
Name: count, dtype: int642. 删除重复评论后的标签分布:
label
0    199496
1     51661
2     55169
Name: count, dtype: int64警告:数据清洗后没有label为3的数据!
原始数据中label为3的样本数:55267
其中有空值的样本数:0
删除空值后label为3的样本数:55267
label为3的唯一评论数:55267
label为3的评论与其他标签重复的数量:0使用修改后的去重策略:
label
0    199496
1     51714
2     55267
3     55267
Name: count, dtype: int64
修改后的唯一标签: [0 1 2 3]查找相同评论对应不同标签的数据:
有55318条评论对应多个不同的标签以下是前10个多标签评论的例子:
评论: !!!!!!!!!!我的胃~ ~ ~ 这个星期你受苦了~ ~ ~ 留口水。。。看着照片,老想家了。。...
对应的标签: [2 3]
--------------------------------------------------
评论: !!!!!!!【今年12星座最终留下啥遗憾】从我遇见你的那天起,我所做的每一件事都是为了接近你。
对应的标签: [2 3]
--------------------------------------------------
评论: !!!!!!!忘了刚梦啥了。再梦一个。
对应的标签: [2 3]
--------------------------------------------------
评论: !!!!!!終 於出了..好想要吖 : 炒起距!闽Α 2还 ?100。颇为贵左d 。
对应的标签: [2 3]
--------------------------------------------------
评论: !!!!!败了。。这个狠。这个…真狠~
对应的标签: [2 3]
--------------------------------------------------
评论: !!!半夜三更饿了什么的最讨厌了
对应的标签: [2 3]
--------------------------------------------------
评论: !!!抽自己,还有什么脸!!!还有什么脸面胖下去T .T 求掉肉那是相当相当的励志太励志了太励志了,...
对应的标签: [2 3]
--------------------------------------------------
评论: !" !一个开头恐怖,中间可笑,结局悲惨的故事:遇见芙蓉姐姐,爱上芙蓉姐姐,娶了芙蓉姐姐
对应的标签: [2 3]
--------------------------------------------------
评论: !~ !~ !~ !~ !忒可爱了,这毛毛腿。每次见到你肥肥的小手,我就想到了铜锣烧。
对应的标签: [2 3]
--------------------------------------------------
评论: !“癌症妈妈”郭雪姣一路走好!让我们记住她的乐观与坚强。【“癌症妈妈”昨天走了让我们记住她的乐观和勇...
对应的标签: [2 3]
--------------------------------------------------

可以看出标签3就是一个摆设,这个数据集就是一个三分类的数据集,而不是四分类的。

请大家注意一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/93344.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/93344.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Custom SRP - Baked Light

https://catlikecoding.com/unity/tutorials/custom-srp/baked-light/本篇教程介绍将静态光照烘焙到 light map 和 light prob 中.首先贴上我遇到的问题,希望遇到的同学帮忙解答:实践本教程过程中,定义的 MetaPass 没有效果, Unity 始终在使用默认的 meta pass,我使用的是 unit…

[Python]PTA:实验2-3-1-for 求1到100的和

本题要求编写程序,计算表达式 1 2 3 ... 100 的值。输入格式:本题无输入。输出格式:按照以下格式输出:sum 累加和代码如下:x0 for i in range(1,101,1):xi print("sum {}".format(x))

【解决笔记】MyBatis-Plus 中无 selectList 方法

MyBatis-Plus 中无 selectList 方法的解决笔记 核心前提 MyBatis-Plus 的 BaseMapper 接口内置了 selectList 等基础查询方法,继承该接口可直接使用,无需手动实现。 无 selectList 方法的两种情况及解决方式 1. 未继承 BaseMapper(推荐方案&a…

一周学会Matplotlib3 Python 数据可视化-绘制箱线图(Box)

锋哥原创的Matplotlib3 Python数据可视化视频教程: 2026版 Matplotlib3 Python 数据可视化 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 课程介绍 本课程讲解利用python进行数据可视化 科研绘图-Matplotlib,学习Matplotlib图形参数基本设置&…

4.4 vue3生命周期函数

vue3生命周期函数生命周期钩子名称对比表阶段Vue 2 选项式 APIVue 3 组合式 API说明创建前beforeCreateonBeforeCreate(已废弃)Vue 3 中 setup() 替代创建完成createdsetup()(替代)setup 是入口,代替 beforeCreate 和 …

无脑整合springboot2.7+nacos2.2.3+dubbo3.2.9实现远程调用及配置中心

简介: 好久没有写博客了,最近辞职了有时间进行一次分享,今天我们主要是使用单体服务springboot整合nacos实现配置中心,然后整合dubbo来实现远程的rpc调用。如下是本地案例架构图,生产者和消费者的配置在nacos配置中心上…

腾讯位置商业授权微信小程序逆地址解析(坐标位置描述)

微信小程序JavaScript SDK 开发指南 逆地址解析(坐标位置描述) reverseGeocoder(options:Object) 本接口提供由坐标到坐标所在位置的文字描述的转换,输入坐标返回地理位置信息和附近poi列表。 注:坐标系采用gcj02坐标系 options属性说明 属性类型必填…

3D商品展示:技术狂欢下的普及困局

当微软推出Copilot 3D——仅需一张照片即可生成可编辑的3D模型时,业界曾欢呼“建模门槛彻底消失”。然而技术的美好愿景却撞上现实的铜墙铁壁:当前电商平台3D商品加载卡顿导致用户跳出率超60%,企业3D化渗透率仍不足34%。绚烂的技术烟花下&…

(Arxiv-2025)Stand-In:一种轻量化、即插即用的身份控制方法用于视频生成

Stand-In:一种轻量化、即插即用的身份控制方法用于视频生成 paper是WeChat发布在Arxiv 2025的工作 paper title:Stand-In: A Lightweight and Plug-and-Play Identity Control for Video Generation Code:链接 图1:给定一张参考图像&#xff…

数据科学与爬虫技术学习笔记

数据科学与爬虫技术学习笔记 一、数据科学基础库 1. NumPy:数值计算的基石 NumPy 是 Python 科学计算的核心库,专为数组和矩阵操作设计,能大幅简化循环操作,提供丰富的数学函数。 核心优势:高效处理同类型元素的多维…

学习嵌入式之硬件——I2C

一、I2C1.定义内部集成电路的简称,半双工串行同步通信,是芯片和芯片之间的通信方式;通常只有一个主机,多个从机,采用主从应答的方式上图所示是IIC的总线的使用场景,所有挂载在IIC总线上的设备都有两根信号线…

使用websockt

封装websocktHooksimport { ref, onMounted, onUnmounted } from vue;/*** webSocket的Hooks* param {string} websocket链接地址* */ export function useWebSocket(url: string) {// 核心状态 const data: Ref<any> ref(null);//收到websocket返回的数据const socke…

Jmeter自定义脚本

目录 log&#xff1a;输出类 Label&#xff1a;你自定义的组件的名称 FileName&#xff1a;添加的脚本文件的文件名 Parameters&#xff1a;你传入的参数&#xff0c;是一个字符串 args&#xff1a;你传入的参数&#xff0c;是一个数组 Parameters和args的异同&#xff1…

飞算 JavaAI 电商零售场景实践:从订单峰值到供应链协同的全链路技术革新

目录 一、电商核心场景的技术攻坚 1.1 分布式订单系统的事务一致性设计 1.1.1 TCC 模式下的订单创建流程 1.1.2 订单状态机的可靠流转 1.2 高并发秒杀系统的架构设计 1.2.1 多级限流与流量削峰 1.2.2 库存防超卖机制 1.3 智能推荐与用户行为分析 1.3.1 用户行为实时采…

51单片机-51单片机介绍

51单片机介绍单片机简介什么是单片机呢&#xff1f;单片机是一种集成电路芯片&#xff0c;采用超大规模集成电路技术将中央处理器&#xff08;CPU&#xff09;、随机存储器&#xff08;RAM&#xff09;、只读存储器&#xff08;ROM&#xff09;、多种I/O口、中断系统、定时器/计…

8月AI面试工具测评:破解规模化招聘难题

金秋校招临近&#xff0c;企业面临“百万简历涌入VS面试官团队告急”的典型困境。传统线下面试效率低下、标准参差&#xff0c;难以应对短时间内爆发式的人才筛选需求。AI面试工具凭借自动化与智能化特性成为破局关键&#xff0c;但市面上产品良莠不齐——究竟哪款能兼顾效率与…

Debian新一代的APT软件源配置文件格式DEB822详解

Debian 的 DEB822 格式详解&#xff1a;新一代 APT 源配置 DEB822 是一种基于 RFC 822 数据格式的配置文件语法&#xff0c;Debian 新一代的 APT 软件源配置文件格式就采用了 DEB822。DEB822 格式从 Debian 11 (Bullseye) 开始被引入&#xff0c;并在 Debian 12 (Bookworm) 中成…

实战 AI8051U 音视频播放:USART-SPI→DMA-P2P→SPI+I2S 例程详解

视频P2P播放&#xff0c;时间计算&#xff1a;fps20,50ms 周期刷屏时间&#xff1a;160*80 一帧刷屏时间28.2ms帧间隔&#xff1a;50ms-28.2ms21.8ms音频双缓冲区交叉播放&#xff0c;利用视频播放帧间隔加载下一个缓冲区音频数据&#xff0c;时间计算&#xff1a;16000采样率 …

解释器模式C++

解释器模式&#xff08;Interpreter Pattern&#xff09;是一种行为型设计模式&#xff0c;它用于定义一种语言的语法规则&#xff0c;并构建一个解释器来解释该语言中的句子。这种模式适用于需要处理固定语法规则的场景&#xff0c;如表达式解析、配置文件解析等。 解释器模式…

debian 13 显示中文字体 不再显示菱形块 终端显示中文

找了很多坑。。其它就安装一下中文字体即可 。 apt install ttf-wqy-zenhei 之后测试命令 fc-list &#xff1a;langzh 显示了刚字体的路径和中文字即成功了。 rootdebian:~# dpkg-reconfigure locales 以上命令配置中文语言。 debian 12.11 安装 MySQL 下载配置文件 &am…