Scikit-Learn 中的成对度量和核函数

Beginner

This tutorial is from open-source community. Access the source code

简介

在本实验中,我们将探索 scikit-learn 中的 sklearn.metrics.pairwise 子模块。该模块提供了用于计算样本集之间成对距离和亲和度的实用工具。

我们将了解不同的成对度量和核函数、它们的定义以及如何在 scikit-learn 中使用它们。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到 笔记本 标签页,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们会及时为你解决问题。

距离度量

距离度量是衡量两个对象之间差异程度的函数。这些度量满足某些条件,例如非负性、对称性和三角不等式。

一些常见的距离度量包括欧几里得距离、曼哈顿距离和闵可夫斯基距离。

让我们使用 pairwise_distances 函数计算两组样本之间的成对距离:

import numpy as np
from sklearn.metrics import pairwise_distances

X = np.array([[2, 3], [3, 5], [5, 8]])
Y = np.array([[1, 0], [2, 1]])

## 计算 X 和 Y 之间的成对距离
distances = pairwise_distances(X, Y, metric='manhattan')
print(distances)

输出:

array([[4., 2.],
       [7., 5.],
       [12., 10.]])

核函数

核函数是衡量两个对象之间相似度的指标。它们可用于各种机器学习算法中,以捕捉特征之间的非线性关系。

Scikit-learn 提供了不同的核函数,如线性核、多项式核、sigmoid 核、径向基函数(RBF)核、拉普拉斯核和卡方核。

让我们使用 pairwise_kernels 函数计算两组样本之间的成对核函数:

from sklearn.metrics.pairwise import pairwise_kernels

X = np.array([[2, 3], [3, 5], [5, 8]])
Y = np.array([[1, 0], [2, 1]])

## 使用线性核计算 X 和 Y 之间的成对核函数
kernels = pairwise_kernels(X, Y, metric='linear')
print(kernels)

输出:

array([[ 2.,  7.],
       [ 3., 11.],
       [ 5., 18.]])

余弦相似度

余弦相似度是衡量两个向量之间相似性的一种度量。它在对向量进行归一化后,计算它们之间夹角的余弦值。

Scikit-learn 提供了 cosine_similarity 函数来计算向量之间的余弦相似度。

from sklearn.metrics.pairwise import cosine_similarity

X = np.array([[2, 3], [3, 5], [5, 8]])
Y = np.array([[1, 0], [2, 1]])

## 计算 X 和 Y 之间的余弦相似度
similarity = cosine_similarity(X, Y)
print(similarity)

输出:

array([[0.89442719, 0.9486833 ],
       [0.93982748, 0.99388373],
       [0.99417134, 0.99705449]])

多项式核函数

多项式核函数通过考虑两个向量维度之间的相互作用来计算它们之间的相似度。

Scikit-learn 提供了 polynomial_kernel 函数来计算向量之间的多项式核函数。

from sklearn.metrics.pairwise import polynomial_kernel

X = np.array([[2, 3], [3, 5], [5, 8]])
Y = np.array([[1, 0], [2, 1]])

## 计算 X 和 Y 之间的多项式核函数
kernel = polynomial_kernel(X, Y, degree=2)
print(kernel)

输出:

array([[ 10.,  20.],
       [ 17.,  37.],
       [ 38.,  82.]])

总结

在本实验中,我们探索了 scikit-learn 中的 sklearn.metrics.pairwise 子模块。我们了解了不同的成对度量和核函数、它们的定义,以及如何使用它们来计算样本之间的距离和亲和度。

使用 pairwise_distances 函数,我们计算了样本集之间的成对距离。使用 pairwise_kernels 函数,我们使用各种核函数计算了样本集之间的成对核函数。

我们还探索了用于计算向量之间余弦相似度的 cosine_similarity 函数,以及用于计算多项式核函数的 polynomial_kernel 函数。

这些成对度量和核函数在各种机器学习任务中都很有用,例如聚类、降维和基于相似度的分析。

总结

恭喜你!你已经完成了成对度量实验。你可以在 LabEx 中练习更多实验来提升你的技能。