В анализе данных и машинном обучении под субдискретизацией понимается процесс уменьшения размера или детализации набора данных. Понижение дискретизации может быть особенно полезно при работе с большими наборами данных для повышения эффективности вычислений или решения проблем дисбаланса классов. В этой статье мы рассмотрим несколько методов понижения разрешения в Python, приведя примеры кода и практические пояснения.
Метод 1: случайная подвыборка
Случайная подвыборка – это простой подход, который предполагает случайный выбор подмножества точек данных из исходного набора данных. Этот метод полезен, когда набор данных слишком велик и мы хотим работать с меньшей репрезентативной выборкой. Вот пример случайной подвыборки в Python:
import numpy as np
def random_subsample(data, sample_size):
indices = np.random.choice(len(data), size=sample_size, replace=False)
subsample = data[indices]
return subsample
# Usage example
original_data = [...] # Your original dataset
sample_size = 1000
downsampled_data = random_subsample(original_data, sample_size)
Метод 2: стратифицированная выборка
Стратифицированная выборка обычно используется при решении проблем классового дисбаланса в задачах классификации. Это гарантирует, что процесс субдискретизации сохраняет относительное распределение классов исходного набора данных. Вот фрагмент кода, демонстрирующий стратифицированную выборку с использованием scikit-learn:
from sklearn.model_selection import train_test_split
def stratified_sampling(data, labels, sample_size):
_, _, _, downsampled_labels = train_test_split(data, labels, train_size=sample_size, stratify=labels)
return downsampled_labels
# Usage example
original_data = [...] # Your original dataset
original_labels = [...] # Labels corresponding to the original dataset
sample_size = 1000
downsampled_labels = stratified_sampling(original_data, original_labels, sample_size)
Метод 3: понижение разрешения на основе кластеров
Понижение выборки на основе кластеров подходит для наборов данных с пространственным или временным компонентом. Этот метод включает кластеризацию точек данных и выбор репрезентативных выборок из каждого кластера. Для этого библиотека scikit-learn предоставляет различные алгоритмы кластеризации. Вот пример использования кластеризации K-средних:
from sklearn.cluster import KMeans
def cluster_based_downsampling(data, sample_size):
kmeans = KMeans(n_clusters=sample_size)
kmeans.fit(data)
cluster_centers = kmeans.cluster_centers_
return cluster_centers
# Usage example
original_data = [...] # Your original dataset
sample_size = 1000
cluster_centers = cluster_based_downsampling(original_data, sample_size)
Понижение разрешения — ценный метод уменьшения размера наборов данных в Python. В этой статье мы исследовали три популярных метода понижающей выборки: случайную подвыборку, стратифицированную выборку и понижающую выборку на основе кластеров. Каждый метод предлагает свои преимущества в зависимости от конкретных требований вашей задачи анализа данных или машинного обучения. Включив эти методы понижения дискретизации в свои рабочие процессы, вы сможете упростить данные, не жертвуя при этом производительностью.