在六三八的鼓舞人心的故事中,他们的任务的第一步是评估和整理大量积压的未投递邮件。这些高耸入云的堆栈必须先进行分类和理解,然后才能取得任何进展。在现代机器学习的世界中,这个初始阶段类似于探索性数据分析 (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中文网其他相关文章!