首页 >后端开发 >Python教程 >探索性数据分析:挖掘待办事项

探索性数据分析:挖掘待办事项

DDD
DDD原创
2024-12-23 17:50:15796浏览

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

对于本系列,我们将使用 CSV 数据集复制此过程,其中每一行包含一个类别(例如“技术”、“商业”)以及与其关联的文本。类别充当标签,指示每段文本所属的位置。用于数据操作的 Pandas、用于可视化的 Matplotlib、用于文本洞察的 WordCloud、用于标记分析的 Tiktoken 以及用于文本处理的 NLTK 等工具将帮助我们理解我们的数据集。

在这一步中,我们将:

  1. 加载数据并检查其结构。

  2. 识别可能影响模型性能的缺失或不一致的值。

  3. 探索类别分布以了解标签之间的平衡。

  4. 可视化文本数据中的词频以发现模式。

  5. 使用 Tiktoken 分析代币计数来衡量复杂性。

这个 EDA 阶段反映了六三八细致的排序工作,他们必须先理清混乱,然后才能带来秩序。通过详细了解我们的数据集,我们为构建能够精确分类和解释文本的微调法学硕士奠定了基础。

介绍

探索性数据分析 (EDA) 类似于处理令人畏惧的积压数据——堆积如山、无组织且充满未开发的潜力。就像二战期间六三八单位处理大量积压的未投递邮件一样,EDA 是我们在混乱中筛选以发现见解、识别趋势并为下一阶段的数据分析做好准备的方式。

在这次探索中,我们将深入研究 BBC 新闻文章的数据集,阐明其结构,解决不一致问题,并揭示隐藏在数据中的故事。”

评估待办事项:数据集概述

首先,我们必须首先了解数据集的规模和结构。 BBC 新闻文章数据集包含 2,234 个条目,分布在五个类别:商业、体育、政治、科技和娱乐。每个条目都有两个主要特点:

  • 类别:文章的主题或部分。
  • text:文章的完整内容。

为了更清楚地了解我们正在处理的内容,我们将数据加载到 Pandas DataFrame 中,进行快速检查,并发现:

清理积压订单

随着六三八处理未分类的邮件堆,我们也需要组织我们的数据集。清洁过程涉及几个关键步骤:

  • 删除重复项
    重复的文章使数据集变得混乱。识别并删除这些冗余后。

  • 处理缺失值
    尽管我们的数据集相对干净,但我们确保解决了任何潜在的空值,从而在最终数据中不留下任何空条目。”

细分类别

积压的订单被清除后,我们分析了文章在类别之间的分布,以确定主导主题。这是我们的发现:

  • 热门类别:商业和体育并列占比最大,每个类别包含 512 篇文章。

  • 较小的类别:娱乐、政治和科技,文章较少,但提供了独特的见解。

分布确认数据集是平衡的,使我们能够专注于更深入的分析,而不必担心严重的类别不平衡。”

放大:显微镜下的体育文章

就像按目的地对邮件进行分类一样,我们选择专注于体育类别以进行更深入的研究。目标是分析文本内容并提取有意义的模式。”

  • 标记化和停用词删除
    使用 NLTK 库,我们将文本标记为单个单词并删除了常见的停用词(例如“and”、“the”、“is”)。这使我们能够专注于对该类别更重要的单词。”

  • 词频分析
    创建频率分布是为了识别体育文章中最常见的术语。不出所料,“比赛”、“团队”和“游戏”等词语占据主导地位,反映了内容的竞争性质。”

可视化结果:词云
为了捕捉体育文章的精髓,我们生成了词云。最常用的术语显得更大,生动地描绘了该类别的核心主题。”

Exploratory Data Analysis: Digging Through the Backlog

要点

正如六三八精心分类和交付积压的邮件一样,我们的 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn