机器学习中的数据可视化



数据可视化是机器学习 (ML) 的一个重要方面,因为它有助于分析和传达数据中的模式、趋势和见解。数据可视化涉及创建数据的图形表示,这有助于识别可能无法从原始数据中显而易见的模式和关系。

什么是数据可视化?

数据可视化是对数据和信息的图形表示。借助数据可视化,我们可以看到数据的外观以及数据的属性之间存在何种关联。它是快速查看特征是否对应于输出的最快方法。

数据可视化在机器学习中的重要性

数据可视化在机器学习中发挥着重要作用。我们可以在机器学习中以多种方式使用它。以下是数据可视化在机器学习中的一些用途:

  • 探索数据 - 数据可视化是探索和理解数据的必不可少的工具。可视化可以帮助识别模式、相关性和异常值,还可以帮助检测数据质量问题,例如缺失值和不一致性。
  • 特征选择 - 数据可视化可以帮助为ML模型选择相关的特征。通过可视化数据及其与目标变量的关系,您可以识别与目标变量高度相关的特征,并排除预测能力较弱的无关特征。
  • 模型评估 - 数据可视化可用于评估ML模型的性能。ROC曲线、精确率-召回率曲线和混淆矩阵等可视化技术可以帮助理解模型的准确率、精确率、召回率和F1分数。
  • 传达见解 - 数据可视化是向可能没有技术背景的利益相关者传达见解和结果的有效方法。散点图、折线图和条形图等可视化可以帮助以易于理解的格式传达复杂信息。

用于数据可视化的流行Python库

以下是机器学习中用于数据可视化最流行的Python库。这些库提供了广泛的可视化技术和自定义选项,以满足不同的需求和偏好。

1. Matplotlib

Matplotlib是用于数据可视化最流行的Python包之一。它是一个跨平台库,用于根据数组中的数据绘制二维图。它提供了一个面向对象的API,有助于使用Python GUI工具包(如PyQt、WxPython或Tkinter)将绘图嵌入应用程序中。它也可用于Python和IPython shell、Jupyter Notebook以及Web应用程序服务器。

2. Seaborn

Seaborn是一个开源的、基于BSD许可的Python库,它提供用于使用Python编程语言可视化数据的高级API。

3. Plotly

Plotly是一家位于蒙特利尔的科技计算公司,参与开发数据分析和可视化工具,如Dash和Chart Studio。它还为Python、R、MATLAB、Javascript和其他计算机编程语言开发了开源图形应用程序编程接口 (API) 库。

4. Bokeh

Bokeh是Python的一个数据可视化库。与Matplotlib和Seaborn不同,它们也是Python数据可视化包,Bokeh使用HTML和JavaScript呈现其绘图。因此,它被证明对开发基于Web的仪表板非常有用。

数据可视化的类型

机器学习数据的数据可视化可以分为以下两类:

  • 单变量图
  • 多变量图
Data Visualization Techniques

让我们详细了解上述两种类型的数据可视化图。

单变量图:独立理解属性

最简单类型的可视化是单变量或“单变量”可视化。借助单变量可视化,我们可以独立地理解数据集的每个属性。以下是使用Python实现单变量可视化的一些技术:

我们将在各自的章节中详细学习上述技术。让我们简要了解一下这些技术。

直方图

直方图将数据分组到箱中,并且是快速了解数据集中每个属性分布的最快方法。以下是直方图的一些特征:

  • 它为我们提供了为可视化创建的每个箱中观察值的计数。
  • 从箱的形状,我们可以很容易地观察到分布,即它是高斯分布、偏态分布还是指数分布。
  • 直方图还有助于我们看到可能的异常值。

示例

以下代码是创建直方图的Python脚本示例。在这里,我们将使用NumPy数组上的hist()函数生成直方图,并使用matplotlib进行绘图。

import matplotlib.pyplot as plt
import numpy as np
# Generate some random data
data = np.random.randn(1000)
# Create the histogram
plt.hist(data, bins=30, color='skyblue', edgecolor='black')
plt.xlabel('Values')
plt.ylabel('Frequency')
plt.title('Histogram Example')
plt.show()
输出
ML Histograms Plot

由于随机数生成,当您执行上述程序时,您可能会注意到输出之间存在细微差异。

密度图

密度图是另一种快速简便的技术,用于获取每个属性的分布。它也类似于直方图,但在每个箱子的顶部绘制一条平滑的曲线。我们可以将其称为抽象的直方图。

示例

在下面的示例中,Python脚本将为鸢尾花数据集的属性分布生成密度图。

import seaborn as sns
import matplotlib.pyplot as plt
# Load a sample dataset
df = sns.load_dataset("iris")
# Create the density plot
sns.kdeplot(data=df, x="sepal_length", fill=True)
# Add labels and title
plt.xlabel("Sepal Length")
plt.ylabel("Density")
plt.title("Density Plot of Sepal Length")
# Show the plot
plt.show()
输出
Density Plot

从上面的输出中,可以很容易地理解密度图和直方图之间的区别。

箱线图

箱线图,简称箱图,是另一种用于查看每个属性分布的有用技术。以下是此技术的特点:

  • 它是单变量的,并总结了每个属性的分布。
  • 它绘制一条代表中间值(即中位数)的线。
  • 它在25%和75%处绘制一个箱体。
  • 它还绘制须线,这将使我们了解数据的离散程度。
  • 须线外的点表示异常值。异常值将是中间数据离散程度的1.5倍。

示例

在下面的示例中,Python脚本将为鸢尾花数据集的属性分布生成箱线图。

import matplotlib.pyplot as plt
# Sample data
data = [10, 15, 18, 20, 22, 25, 28, 30, 32, 35]
# Create a figure and axes
fig, ax = plt.subplots()
# Create the boxplot
ax.boxplot(data)
# Set the title
ax.set_title('Box and Whisker Plot')
# Show the plot
plt.show()
输出
Box Plot

多变量图:多个变量之间的交互

另一种可视化类型是多变量或“多元”可视化。借助多元可视化,我们可以理解数据集的多个属性之间的交互。以下是Python中实现多元可视化的一些技术:

相关矩阵图

相关性是两个变量之间变化的指示。我们可以绘制相关矩阵图来显示哪个变量相对于另一个变量具有高或低相关性。

示例

在下面的示例中,Python脚本将生成一个相关矩阵图。它可以借助Pandas DataFrame上的corr()函数生成,并借助Matplotlib pyplot进行绘制。

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# Sample data
data = {'A': [1, 2, 3, 4, 5],
        'B': [5, 4, 3, 2, 1],
        'C': [2, 3, 1, 4, 5]}
df = pd.DataFrame(data)
# Calculate the correlation matrix
c_matrix = df.corr()
# Create a heatmap
sns.heatmap(c_matrix, annot=True, cmap='coolwarm')
plt.title("Correlation Matrix")
plt.show()
输出
Correlation Matrix Plot

从上面相关矩阵的输出中,我们可以看到它是对称的,即左下角与右上角相同。

散点矩阵图

散点矩阵图使用二维空间中的点来显示一个变量受另一个变量影响的程度或它们之间的关系。从概念上讲,散点图非常类似于线形图,它们都使用水平和垂直轴来绘制数据点。

示例

在下面的示例中,Python脚本将为鸢尾花数据集生成并绘制散点矩阵。它可以借助Pandas DataFrame上的scatter_matrix()函数生成,并借助pyplot进行绘制。

import pandas as pd
import matplotlib.pyplot as plt
from sklearn import datasets
# Load the iris dataset
iris = datasets.load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
# Create the scatter matrix plot
pd.plotting.scatter_matrix(df, diagonal='hist', figsize=(8, 7))
plt.show()
输出
Scatter Matrix Plot

在接下来的几章中,我们将了解机器学习中一些流行且广泛使用的可视化技术。

广告