【机器学习实战入门】识别假新闻

在这里插入图片描述
你是否信任来自社交媒体的所有新闻?

并不是所有的新闻都是真实的,对吗?

那么,如何检测假新闻呢?

答案是 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 项目:

  1. 导入必要的库:
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

在这里插入图片描述

  1. 现在,让我们将数据读入一个 DataFrame 中,并获取数据的形状和前 5 条记录。
# 读取数据
df = pd.read_csv('D:\\DataFlair\\news.csv')

# 获取数据的形状和头部记录
df.shape
df.head()

在这里插入图片描述

  1. 从 DataFrame 中获取标签。
# DataFlair - 获取标签
labels = df.label
labels.head()

在这里插入图片描述

  1. 将数据集分割为训练集和测试集。
# DataFlair - 分割数据集
x_train, x_test, y_train, y_test = train_test_split(df['text'], labels, test_size=0.2, random_state=7)

在这里插入图片描述

  1. 我们以英文停用词和最大文档频率 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)

在这里插入图片描述

  1. 接下来,我们初始化一个 PassiveAggressiveClassifier。我们将它拟合到 tfidf_trainy_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)}%')

在这里插入图片描述

  1. 通过该模型,我们获得了 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 中的 TfidfVectorizerhttps://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
posted @   爱上编程技术  阅读(8)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示