决策树机器学习算法解析

在这篇文章中,将探讨如何利用决策树机器学习算法来构建一个模型,该模型能够使用新闻数据集来区分新闻的真实性。当前,假新闻的传播速度极快,已经成为了一个严重的问题。所使用的数据集是一个已经标记好的数据集,其中包含了REAL(真实)或FAKE(虚假)的标签。数据集中包含了标题和文本作为独立特征,而标签则是依赖特征。

决策树算法是一种监督式的机器学习算法,所有的决策都是基于某些条件进行的。决策树有一个根节点和从根节点延伸出的叶节点,这些节点的决策基于一些参数,比如基尼指数、熵、信息增益等。想要了解更多关于决策树算法的信息,请阅读文章。在这篇文章中,解释了决策树的概念,并且通过一个实际的问题陈述,展示了如何使用信息增益来构建决策树。

在开始创建和训练模型之前,首先需要对数据集进行预处理。首先,导入一些重要的基础库。

import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt import warnings warnings.simplefilter("ignore")

Seaborn和Matplotlib是两个用于可视化的著名库。接下来是数据集,点击下载数据集。将新闻文件的路径粘贴到read_csv中,并使用pandas来读取它。

df = pd.read_csv('path_to_news_file.csv')

创建数据框架后,只需输入数据框架的名称并运行,即可查看数据框架。它不会显示所有行,而是给出前五行和后五行。

print(df.head()) print(df.tail())

查看数据框架的信息。

df.info()

检查空值。使用isnull()方法进行检查。

print(df.isnull().sum())

可以看到所有的值都是0,这意味着数据集中没有空值。因此,可以继续进行,无需对数据集进行任何更改。

查看形状。这个方法给出了数据集中的行数和列数。

print("There are {} rows and {} columns.".format(df.shape[0], df.shape[1]))

查看数据框架的统计描述。统计描述显示了诸如计数(列中的非空值)、平均值、标准差、最小值、最大值以及列中值的百分位数等详细信息。在数据框架中,只有一个数值列,因此它只会给出一个列的描述。但不需要这个列来构建模型。

print(df.describe())

使用drop方法删除这个无名列。

df = df.drop(['Unnamed: 0'], axis=1)

现在查看最终更新后的数据框架。

print(df)

让看看数据集中有多少真实新闻和多少假新闻。value_counts方法实际上返回了给定特征中特定变量的计数。

print(df['label'].value_counts())

有3171条真实新闻和3164条假新闻。OMG!新闻是假新闻的概率几乎为0.5,所以,要警惕这些新闻。

使用seaborn库可视化计数图。

plt.figure(figsize=(5,10)) sns.countplot(df['label']) plt.show()

在图表中,可以看到两者几乎相似。定义x和y。在创建模型之前,首先需要定义x和y,其中x包含数据集中的所有独立特征,y包含依赖特征,即标签。

x = df.iloc[:, :-1].values y = df.iloc[:, -1].values

导入CountVectorizer。由于正在处理文本数据,因此需要使用计数向量化器。它实际上用于将文本转换为基于每个单词的频率的向量,这意味着在整个文本中单词重复了多少次。它在sci-kit learn库中可用。

from sklearn.feature_extraction.text import CountVectorizer vect = CountVectorizer(stop_words="english", max_features=1000) x1 = vect.fit_transform(x[:, 0]).todense() x2 = vect.fit_transform(x[:, 1]).todense() x_mat = np.hstack((x1, x2))

让查看最终创建的矩阵。

print(x_mat)

将数据分割为训练和测试数据集。为此,需要导入train_test_split,它在sci-kit learn库中可用。

from sklearn.model_selection import train_test_split x_train, x_test, y_train, y_test = train_test_split(x_mat, y, random_state=1000)

创建模型。导入DecisionTreeClassifier并将criterion设置为entropy,以便模型将使用熵作为构建决策树的标准,并将其分配给一个名为model的变量。从现在起,无论何时需要使用DecisionTreeClassifier(criterion="entropy"),只需要使用model。

from sklearn.tree import DecisionTreeClassifier model = DecisionTreeClassifier(criterion="entropy")

训练模型。使用fit方法训练模型,并将训练数据集作为参数传递给它。

model.fit(x_train, y_train)

是时候预测结果了。为此使用predict方法。

y_pred = model.predict(x_test)

查看预测结果。

print(y_pred) from sklearn.metrics import accuracy_score, confusion_matrix accuracy = accuracy_score(y_pred, y_test) * 100 print("模型的准确性是 {:.2f}%".format(accuracy)) print(confusion_matrix(y_pred, y_test))
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485