【机器学习实战入门】识别假新闻
你是否信任来自社交媒体的所有新闻?
并不是所有的新闻都是真实的,对吗?
那么,如何检测假新闻呢?
答案是 Python。通过实践这个高级的 Python 项目,你将能够轻松地区分真实与假新闻。
在继续这个机器学习项目之前,请先熟悉相关的术语,如假新闻、TfidfVectorizer、PassiveAggressive Classifier。
什么是假新闻?
假新闻是一种黄色新闻,它包含了可能是骗局的新闻内容,并通常通过社交媒体和其他在线媒体传播。这样做往往是为了推进或实施某些观点,通常与政治议程相关。此类新闻可能包含虚假和/或夸大的声明,并且可能会通过算法的传播而迅速变得流行,导致用户陷入过滤泡泡中。
什么是 TfidfVectorizer?
- TF(词频):某个词在文档中出现的次数就是它的词频。数值越高表示该词出现的频率越高,因此,当这个词语作为搜索关键词时,该文档就越符合搜索条件。
- IDF(逆文档频率):如果某个词在很多文档中出现频率都很高,那么这个词可能是无关紧要的。IDF 是衡量一个词语在整个文集中的重要性的指标。
- TfidfVectorizer 将原始文档集合转换为 TF-IDF 特征矩阵。
技术正在迅速发展!
请通过 WhatsApp 保持与 DataFlair 的联系!
什么是 PassiveAggressiveClassifier?
- 被动攻击算法是在线学习算法。这样的算法在分类结果正确时保持被动,在分类错误时则变得主动,通过更新和调整来纠正错误。与大多数其他算法不同,被动攻击算法不收敛。其目的是通过造成权重向量的范数很少变化来纠正损失。
使用 Python 检测假新闻
目的是构建一个模型,能够准确地将新闻分类为真实或虚假。
关于使用 Python 检测假新闻
这个高级 Python 项目涉及假新闻和真实新闻的区分。使用 sklearn,我们在数据集上构建 TfidfVectorizer。然后,我们初始化一个 PassiveAggressive Classifier 并拟合模型。最后,准确率得分和混淆矩阵帮助我们了解模型的效果如何。
假新闻数据集
我们将在这个 Python 项目中使用一个数据集——我们称之为 news.csv。这个数据集有 7796 行 x 4 列。第一列标识新闻,第二列和第三列是标题和正文,第四列标注了新闻是真还是假。该数据集占用 29.2MB 的空间,你可以在这里下载。
项目前提条件
你需要使用 pip 安装以下库:
pip install numpy pandas sklearn
你需要安装 Jupyter Lab 来运行你的代码。在命令提示符下运行以下命令:
C:\Users\DataFlair>jupyter lab
你会看到一个新的浏览器窗口打开;创建一个新的控制台,并使用它来运行你的代码。要一次性运行多行代码,请按 Shift+Enter。
使用 Python 检测假新闻的步骤
请按照以下步骤检测假新闻,完成你的第一个高级 Python 项目:
- 导入必要的库:
import numpy as np
import pandas as pd
import itertools
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import PassiveAggressiveClassifier
from sklearn.metrics import accuracy_score, confusion_matrix
- 现在,让我们将数据读入一个 DataFrame 中,并获取数据的形状和前 5 条记录。
# 读取数据
df = pd.read_csv('D:\\DataFlair\\news.csv')
# 获取数据的形状和头部记录
df.shape
df.head()
- 从 DataFrame 中获取标签。
# DataFlair - 获取标签
labels = df.label
labels.head()
- 将数据集分割为训练集和测试集。
# DataFlair - 分割数据集
x_train, x_test, y_train, y_test = train_test_split(df['text'], labels, test_size=0.2, random_state=7)
- 我们以英文停用词和最大文档频率 0.7(出现频率高于此值的词语将被丢弃)来初始化一个 TfidfVectorizer。停用词是自然语言处理数据预处理中需要过滤掉的最常见的词语。TfidfVectorizer 将一组原始文档转换为 TF-IDF 特征矩阵。
# DataFlair - 初始化 TfidfVectorizer
tfidf_vectorizer = TfidfVectorizer(stop_words='english', max_df=0.7)
# DataFlair - 用训练数据拟合并转换,用测试数据转换
tfidf_train = tfidf_vectorizer.fit_transform(x_train)
tfidf_test = tfidf_vectorizer.transform(x_test)
- 接下来,我们初始化一个 PassiveAggressiveClassifier。我们将它拟合到
tfidf_train
和y_train
上。
然后,我们从 TfidfVectorizer 的测试集中进行预测,并通过sklearn.metrics
中的accuracy_score
计算准确率。
# DataFlair - 初始化 PassiveAggressiveClassifier
pac = PassiveAggressiveClassifier(max_iter=50)
pac.fit(tfidf_train, y_train)
# DataFlair - 从测试集预测并计算准确率
y_pred = pac.predict(tfidf_test)
score = accuracy_score(y_test, y_pred)
print(f'准确率: {round(score * 100, 2)}%')
- 通过该模型,我们获得了 92.82% 的准确率。最后,让我们输出一个混淆矩阵,以了解虚假和真实新闻的预测情况。
# DataFlair - 构建混淆矩阵
confusion_matrix(y_test, y_pred, labels=['FAKE', 'REAL'])
项目小结
今天,我们学习了如何使用 Python 检测假新闻。我们使用了一个政治数据集,实现了 TfidfVectorizer,初始化了一个 PassiveAggressiveClassifier,并拟合了我们的模型。最终,我们达到了 92.82% 的准确率。
希望你喜欢这个使用 Python 进行假新闻检测的项目。继续关注 DataFlair,获取更多有趣且实用的 Python、数据科学和机器学习项目。
数据集:
链接: 识别假新闻 数据集 news
参考资料
资料名称 | 链接 |
---|---|
DataFlair 的机器学习项目 | https://data-flair.training/ |
Python 中的 TfidfVectorizer | https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html |
数据预处理的必要性 | https://towardsdatascience.com/why-data-preprocessing-is-important-6fd8caafd3e1 |
机器学习中的分类器介绍 | https://www.analyticsvidhya.com/blog/2021/02/pac-passive-aggressive-classifier-machine-learning/ |
假新闻的影响研究 | https://firstmonday.org/ojs/index.php/fm/article/view/6147 |
TfidfVectorizer 的应用场景 | https://www.geeksforgeeks.org/understanding-tfidfvectorizer-in-scikit-learn/ |
PassiveAggressiveClassifier 的数学原理 | https://en.wikipedia.org/wiki/Passive-aggressive_algorithms |
社交媒体中的假新闻 | https://www.bbc.com/news/technology-38833935 |
如何构建假新闻检测模型 | https://realpython.com/python-machine-learning-no-scikit-learn/ |
如何下载和使用新闻数据集 | https://www.kaggle.com/datasets/ctileston/fake-and-real-news-dataset |
假新闻检测的技术挑战 | https://www.sciencedirect.com/science/article/pii/S2095495420300037 |
谷歌开发者关于 TF-IDF 的介绍 | https://developers.google.com/machine-learning/glossary#tfidf |
混淆矩阵详解 | https://www.stat.berkeley.edu/~rabbee/courses/stat157/f18/lectures/15-confusion-matrix.pdf |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)