嘿!今天,我们将使用一些常见的机器学习算法在 Python 中创建一个假新闻检测器。
1. 导入模块
就像任何其他项目一样,该项目的第一步也是导入模块。我们正在使用Numpy、Pandas和itertools。其代码如下所示。
1
2
3
4
5
6
7
|
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 |
2. 加载数据
现在,让我们从 csv 文件中读取数据以进行假新闻检测,该文件可以在此处找到。下面显示了相同的代码以及打印前 5 行数据。
1
2
|
data = pd.read_csv( 'news.csv' ) data.head() |
确保 CSV 文件与 Python 代码保存在同一文件夹中。接下来,让我们从刚刚加载的数据中提取标签并打印前五个标签。
1
2
|
lb = df.label lb.head() |
3. 创建训练和测试数据
在将数据传递到最终模型/分类器之前,我们需要将数据拆分为测试数据和训练数据,这在下面提到的代码中完成。
1
|
x_train,x_test,y_train,y_test = train_test_split(data[ 'text' ], lb, test_size = 0.2 , random_state = 7 ) |
为了分割数据,我们将使用80-20
以下规则:80% 的数据用于训练,其余 20% 用于测试数据。
4. 实现 Tfidf-Vectorizer 和 PassiveAggressiveClassifier
TF-IDF
使用 Tfidf-Vectorizer将文本数组转换为矩阵。
- TF(词频):定义为单词在文本中出现的次数。
- IDF(逆文档频率):它衡量一个术语在整个数据中的重要性。
随后,我们应用PassiveAggressiveClassifier
数据并将其拟合到训练数据中。分类器在每次迭代后更新损失,并对权重向量也做出轻微的改变。
最后,我们对测试数据进行预测并计算模型对测试数据的准确性。事实证明,我们得到的测试数据准确率超过 90% 。
其代码如下所示。
1
2
3
4
5
6
7
8
9
10
11
|
tfidf_vectorizer = TfidfVectorizer(stop_words = 'english' , max_df = 0.7 ) tfidf_train = tfidf_vectorizer.fit_transform(x_train) tfidf_test = tfidf_vectorizer.transform(x_test) pac = PassiveAggressiveClassifier(max_iter = 50 ) pac.fit(tfidf_train,y_train) y_pred = pac.predict(tfidf_test) score = accuracy_score(y_test,y_pred) print ( "Accuracy: " , round (score * 100 , 2 ), "%" ) |
结论
今天,我们学习了使用 Python 在包含大量新闻数据的数据集上检测假新闻。检测是在 TfidfVectorizer 和 PassiveAggressiveClassifier 的帮助下完成的。结果我们的准确率超过了 90%,这真是太棒了!
我希望您喜欢假新闻探测器!继续阅读以了解更多信息!