Python 垃圾短信分类及词云图生成
使用Python对'手机垃圾短信'数据集进行分类并生成词云图
本文将使用Python对一个名为'手机垃圾短信'的数据集进行分类,并将垃圾短信和非垃圾短信分别生成词云图,直观展示不同类型短信的特征词。
数据集介绍
数据集名为sms_spam.csv,包含5537行数据,2列,分别是:
- 类型(type): 表示短信的类型,
ham表示非垃圾短信,spam表示垃圾短信。 - 内容(text): 表示短信的具体内容。
准备工作
首先需要安装以下两个包:
- pandas: 用于读取CSV文件。
- wordcloud: 用于生成词云图。
可以使用以下命令进行安装:
!pip install pandas
!pip install wordcloud
代码实现
import pandas as pd
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 读取CSV文件
df = pd.read_csv('sms_spam.csv')
# 分类垃圾短信和非垃圾短信
ham_df = df[df['type'] == 'ham']
spam_df = df[df['type'] == 'spam']
# 生成词云图
def generate_wordcloud(df):
# 将所有短信内容合并为一个字符串
text = ' '.join(df['text'].tolist())
# 生成词云图
wordcloud = WordCloud(width=800, height=800, background_color='white').generate(text)
# 显示词云图
plt.figure(figsize=(8, 8), facecolor=None)
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.tight_layout(pad=0)
plt.show()
# 生成非垃圾短信的词云图
generate_wordcloud(ham_df)
# 生成垃圾短信的词云图
generate_wordcloud(spam_df)
结果展示
运行程序后,会分别生成非垃圾邮件和垃圾邮件的词云图,如下所示:
非垃圾邮件词云图:

垃圾邮件词云图:

通过词云图我们可以直观地观察到垃圾短信和非垃圾短信的语言特征。例如,垃圾短信词云图中出现较多的“免费”、“优惠”、“奖品”等字眼,而非垃圾短信词云图中则以“你好”、“今天”、“明天”等日常用语为主。
原文地址: https://www.cveoy.top/t/topic/neRo 著作权归作者所有。请勿转载和采集!