在六三八的鼓舞人心的故事中,他們的任務的第一步是評估和整理大量積壓的未投遞郵件。這些高聳入雲的堆疊必須先進行分類和理解,然後才能取得任何進展。在現代機器學習的世界中,這個初始階段類似於探索性資料分析 (EDA)。
對於本系列,我們將使用 CSV 資料集複製此過程,其中每一行包含一個類別(例如「技術」、「商業」)以及與其關聯的文字。類別充當標籤,指示每段文字所屬的位置。用於資料操作的 Pandas、用於視覺化的 Matplotlib、用於文字洞察的 WordCloud、用於標記分析的 Tiktoken 以及用於文字處理的 NLTK 等工具將幫助我們理解我們的資料集。
在這一步驟中,我們將:
載入資料並檢查其結構。
辨識可能影響模型表現的缺失或不一致的值。
探索類別分佈以了解標籤之間的平衡。
視覺化文字資料中的詞頻以發現模式。
使用 Tiktoken 分析代幣計數來衡量複雜性。
這個 EDA 階段反映了六三八細緻的排序工作,他們必須先理清混亂,然後才能帶來秩序。透過詳細了解我們的資料集,我們為建立能夠精確分類和解釋文本的微調法學碩士奠定了基礎。
探索性資料分析 (EDA) 類似於處理令人畏懼的積壓資料-堆積如山、無組織且充滿未開發的潛力。就像二戰期間六三八單位處理大量積壓的未投遞郵件一樣,EDA 是我們在混亂中篩選以發現見解、識別趨勢並為下一階段的數據分析做好準備的方式。
在這次探索中,我們將深入研究 BBC 新聞文章的資料集,闡明其結構,解決不一致問題,並揭示隱藏在資料中的故事。 ”
首先,我們必須先了解資料集的規模和結構。 BBC 新聞文章資料集包含 2,234 個條目,分佈在五個類別:商業、體育、政治、科技和娛樂。每個條目都有兩個主要特點:
為了更清楚地了解我們正在處理的內容,我們將資料載入到 Pandas DataFrame 中,進行快速檢查,並發現:
隨著六三八處理未分類的郵件堆,我們也需要組織我們的資料集。清潔過程涉及幾個關鍵步驟:
刪除重複項
重複的文章使資料集變得混亂。識別並刪除這些冗餘後。
處理缺失值
儘管我們的資料集相對乾淨,但我們確保解決了任何潛在的空值,從而在最終資料中不留下任何空白條目。 ”
積壓的訂單被清除後,我們分析了文章在類別之間的分佈,以確定主導主題。這是我們的發現:
熱門類別:商業和運動並列佔比最大,每個類別包含 512 篇文章。
較小的類別:娛樂、政治和科技,文章較少,但提供了獨特的見解。
分佈確認資料集是平衡的,使我們能夠專注於更深入的分析,而不必擔心嚴重的類別不平衡。 ”
放大:顯微鏡下的體育文章
就像按目的地對郵件進行分類一樣,我們選擇專注於體育類別以進行更深入的研究。目標是分析文字內容並提取有意義的模式。 ”
標記化與停用詞刪除
使用 NLTK 庫,我們將文字標記為單字並刪除了常見的停用詞(例如「and」、「the」、「is」)。這使我們能夠專注於對該類別更重要的單字。 ”
詞頻分析
創建頻率分佈是為了識別體育文章中最常見的術語。不出所料,「比賽」、「團隊」和「遊戲」等詞語佔據主導地位,反映了內容的競爭性質。 ”
視覺化結果:詞雲
為了捕捉體育文章的精髓,我們生成了詞雲。最常用的術語顯得更大,生動地描繪了該類別的核心主題。 ”
重點
正如六三八精心分類和交付積壓的郵件一樣,我們的 EDA 流程揭示了 BBC 新聞資料集的結構化且富有洞察力的視圖。
代碼
!pip install tiktoken !pip install matplotlib !pip install wordcloud !pip install nltk !pip install pandas import pandas as pd df = pd.read_csv('/content/bbc.csv', on_bad_lines='skip') df.head() df.info() df.describe() label_count = df['category'].value_counts() len(df['text']) df.drop_duplicates(inplace=True) null_values = df.isnull().sum() df.dropna(inplace=True) import nltk from nltk.corpus import stopwords from nltk.tokenize import word_tokenize from wordcloud import WordCloud from collections import Counter import matplotlib.pyplot as plt nltk.download('punkt') nltk.download('stopwords') nltk.download('punkt_tab') target_label ="sport" target_df = df[df['category'] == target_label] target_word = [ word.lower() for text in target_df['text'] for word in word_tokenize(text) if word.isalnum() and word not in stopwords.words('english') ] target_word_count = Counter(target_word) word_cloud = WordCloud().generate_from_frequencies(target_word_count) plt.figure(figsize=(10, 5)) plt.imshow(word_cloud, interpolation='bilinear') plt.axis('off') plt.show()
以上是探索性資料分析:挖掘待辦事項的詳細內容。更多資訊請關注PHP中文網其他相關文章!