關于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
英文地址,請注明出處:http://en.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…