Введение
В этом практическом занятии мы изучим подмодуль sklearn.metrics.pairwise в scikit-learn. Этот модуль предоставляет утилиты для вычисления попарных расстояний и аффинностей между наборами образцов.
Мы узнаем о различных попарных метриках и ядрах, их определениях и о том, как их использовать в 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]])
## Calculate pairwise distances between X and Y
distances = pairwise_distances(X, Y, metric='manhattan')
print(distances)
Результат:
array([[4., 2.],
[7., 5.],
[12., 10.]])
Ядерные функции
Ядерные функции - это меры сходства между двумя объектами. Они могут быть использованы в различных алгоритмах машинного обучения для выявления нелинейных связей между признаками.
Scikit-learn предоставляет различные ядровые функции, такие как линейная ядровая функция, полиномиальная ядровая функция, сигмоидальная ядровая функция, 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]])
## Calculate pairwise kernels between X and Y using linear kernel
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]])
## Compute cosine similarity between X and 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]])
## Compute polynomial kernel between X and Y
kernel = polynomial_kernel(X, Y, degree=2)
print(kernel)
Результат:
array([[ 10., 20.],
[ 17., 37.],
[ 38., 82.]])
Резюме
В этом практическом занятии мы изучили подмодуль sklearn.metrics.pairwise в scikit-learn. Мы узнали о различных попарных метриках и ядрах, их определениях и том, как их использовать для вычисления расстояний и аффинностей между образцами.
С использованием функции pairwise_distances мы вычислили попарные расстояния между наборами образцов. С использованием функции pairwise_kernels мы вычислили попарные ядра между наборами образцов с использованием различных ядровых функций.
Мы также изучили функцию cosine_similarity для вычисления косинусной близости между векторами и функцию polynomial_kernel для вычисления полиномиального ядра.
Эти попарные метрики и ядра полезны в различных задачах машинного обучения, таких как кластеризация, уменьшение размерности и анализ на основе сходства.
Резюме
Поздравляем! Вы завершили практическое занятие по попарным метрикам. Вы можете выполнить больше практических занятий в LabEx, чтобы улучшить свои навыки.