Попарные метрики и ядра в Scikit-Learn

Beginner

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

Введение

В этом практическом занятии мы изучим подмодуль 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, чтобы улучшить свои навыки.