备忘单可以作为我们初步想法的指南。就我个人而言,我有时会使用一些备忘单,发现它们非常有帮助,特别是在我开始学习机器学习算法时。

除了理解和应用算法,检查所获得的结果是帮助我们认识或了解数据情况的重要一步。在这种情况下,使用数据可视化是一个不错的选择,因为它可以直观地展示算法的结果。

尽管有各种可用的图表,但选择合适的图表可以帮助我们有效地显示结果。因此,我认为制作一个备忘单来帮助快速选择图表是一个好主意。以下是基本的机器学习数据可视化备忘单。

请注意!
在继续之前,请考虑备忘单中推荐的数据可视化方法只是一些快速的初步想法,可能存在这些图表并不适用的情况。接下来,我将通过示例指导您如何使用Python绘制图表。

让我们开始吧。

获取数据
从导入库开始:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

本文将使用iris数据集,该数据集可以直接从sklearn库下载。该数据集也可以在UCI ML iris数据集上找到,并根据CC BY 4.0许可证获得许可。

本文将主要关注“萼片长度”和“萼片宽度”属性。如果您想尝试其他数据集,请随意修改下面的代码或跳过这部分。

from sklearn.datasets import load_iris
data = load_iris()
df = pd.DataFrame(data=data.data, columns=data.feature_names)
df_t = pd.DataFrame(data=data.target, columns=[‘label’])
df_iris = pd.concat([df, df_t], axis=1)
df_iris.head()

在应用任何机器学习技术之前,最好进行EDA(探索性数据分析)来理解数据或发现模式。对于EDA来说,数据可视化起着重要的作用,帮助我们直观地看到数据情况。

接下来,我们将使用散点图来显示所选变量。

sns.set_style(‘darkgrid’)
fig, ax = plt.subplots()
sns.scatterplot(data=df_iris, x=‘萼片长度(cm)’,
y=‘萼片宽度(cm)’,
hue=‘label’,
palette=[‘红色’, ‘蓝色’, ‘橙色’],
ax=ax)
ax.set_xlim(4, 8)
ax.set_ylim(1.9, 4.5)
plt.legend([], [], frameon=False)
plt.show()

现在一切都已经准备好了,让我们继续机器学习部分。

如本文开头所示,该备忘单主要由四个部分组成:

  • 分类
  • 聚类
  • 回归
  • 降维

让我们开始吧…

分类是一种监督机器学习方法,它使用训练数据集创建模型来预测或标记测试数据集。简而言之,如果您想用离散类标签来标记测试数据,分类算法就是您正在寻找的技术。

有多种对数据进行分类的方法。在本文中,我们将使用K最近邻(KNN),它使用接近度或相似性对数据进行分类。由于是监督学习,我们需要划分训练和测试数据集。

以下代码展示了如何使用sklearn中的train_test_split将数据集划分为训练数据和测试数据。然后,应用KNeighborsClassifier类根据训练数据创建分类模型。最后,获得的模型将用于标记测试数据。

对于绘图,我们将使用核密度估计(KDE)图来显示数据点的连续概率密度。该图可以帮助我们可视化分类后的数据密度。散点图也用于显示数据点的位置。我们将使用与预测的类别接近的颜色来标记测试数据,例如红色和粉色,以区分每个类别的训练和测试数据。

从结果中我们可以看出,K最近邻方法使用接近度或相似度对数据进行分类。散点图以粉红色、浅蓝色等显示测试数据点,并按照它们靠近的测试数据点进行分类。KDE图显示了分类后每个类的数据密度。

请注意,数据可视化仅显示结果。要了解分类模型的执行情况,必须计算准确度或F1分数等指标。

与分类相比,聚类是一种无监督机器学习方法,试图识别数据集中的相似组。如果您的数据没有标签并且您想将它们分组为离散的类,那么聚类算法就是您需要的技术。

事实上,有多种算法可以执行聚类任务。其中,K-means聚类是一种常用的方法,且易于使用。理论上,K-means尝试使用距簇质心最近的均值将数据划分为K个簇。

接下来,我们可以应用sklearn中的KMeans类来对数据集进行聚类。

可以看出,与分类结果相比,K-means聚类得到的簇分离得很好。我们可以注意到,KDE图不仅有助于突出显示数据密度高的区域,而且还有助于定位远离其集群的数据点。

可以添加到图中的另一个想法是,如果您使用基于质心的聚类算法,则标记质心将提供更多信息。

回归是一种监督机器学习技术,可以显示因变量和自变量之间的关系。它还可用于预测连续值。因此,如果您使用并希望获得连续值,回归算法就是您需要的技术。

在本文中,我们将应用线性回归,这是一种应用最小二乘法来计算最适合数据的直线的回归方法。

通过我们的鸢尾花数据集,让我们看看萼片长度和萼片宽度属性之间的关系。我们可以使用sklearn中的LinearRegression类执行线性回归,如下面的代码所示。

与前两种机器学习方法不同,这种方法不需要显示数据密度。主要目标是获得回归线。因此,我们只需将线图添加到散点图即可。

从回归线可以解释,对于每种鸢尾花品种,萼片长度和萼片宽度之间存在正相关关系。

请注意,该图表仅显示线性回归算法获得的结果。为了确认两个变量实际上具有线性关系,我们需要计算皮尔逊相关系数。

这种机器学习方法用于处理包含多个连续变量或特征的数据集。它的优点是降低复杂性、提高算法性能或帮助更轻松地绘制数据。因此,如果您想减少特征数量,降维算法可能是您需要的技术。

尽管我们拥有的鸢尾花数据集仅包含四个连续变量,但很难同时可视化这四个属性(特征)。因此,我们需要减少绘图的特征数量。

主成分分析(PCA)是我们将要使用的一种降维方法。简而言之,该方法首先对输入数据进行标准化,然后计算协方差矩阵。之后计算特征向量和特征值进行排序,然后选择主成分。

我们可以轻松地使用sklearn中的PCA类来执行降维。以下代码展示了如何将iris数据集的四个特征减少为两个特征。

对于数据可视化,我们只能使用散点图来显示数据点在新维度空间中的位置。

散点图显示了使用PCA技术处理后的数据点。尽管它们看起来与之前的散点图相似,但数据点的位置不同。可以注意到,用蓝色和橙色标记的鸢尾花种类分离得很好。

要点:

首先,如前所述,备忘单可以作为指南,您可以在其中获得一些建议。本文中提供的表格旨在为您提供一些初步想法。

如果我们仔细观察,会发现推荐的这四张图表有一个共同点,那就是散点图,用于显示基本信息。然后,可以添加其他图来表达附加信息:使用KDE图显示数据密度,使用折线图显示回归线。

请注意,在某些情况下这些图表可能并不适用。在某些情况下,其他图表可能能够更好地显示结果。

如果您有任何建议,请随时发表评论。我很乐意阅读。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注