Регрессия методом ближайших соседей#

Демонстрация решения задачи регрессии с использованием k-ближайших соседей и интерполяции цели с использованием как барицентрических, так и постоянных весов.

# Authors: The scikit-learn developers
# SPDX-License-Identifier: BSD-3-Clause

Сгенерировать тестовые данные#

Здесь мы генерируем несколько точек данных для обучения модели. Мы также генерируем данные во всем диапазоне обучающих данных, чтобы визуализировать, как модель будет реагировать во всей этой области.

import matplotlib.pyplot as plt
import numpy as np

from sklearn import neighbors

rng = np.random.RandomState(0)
X_train = np.sort(5 * rng.rand(40, 1), axis=0)
X_test = np.linspace(0, 5, 500)[:, np.newaxis]
y = np.sin(X_train).ravel()

# Add noise to targets
y[::5] += 1 * (0.5 - np.random.rand(8))

Обучить модель регрессии#

Здесь мы обучаем модель и визуализируем, как uniform и distance веса в предсказании влияют на предсказанные значения.

n_neighbors = 5

for i, weights in enumerate(["uniform", "distance"]):
    knn = neighbors.KNeighborsRegressor(n_neighbors, weights=weights)
    y_ = knn.fit(X_train, y).predict(X_test)

    plt.subplot(2, 1, i + 1)
    plt.scatter(X_train, y, color="darkorange", label="data")
    plt.plot(X_test, y_, color="navy", label="prediction")
    plt.axis("tight")
    plt.legend()
    plt.title("KNeighborsRegressor (k = %i, weights = '%s')" % (n_neighbors, weights))

plt.tight_layout()
plt.show()
KNeighborsRegressor (k = 5, weights = 'uniform'), KNeighborsRegressor (k = 5, weights = 'distance')

Общее время выполнения скрипта: (0 минут 0,180 секунды)

Связанные примеры

Классификация методом ближайших соседей

Классификация методом ближайших соседей

Сравнение ближайших соседей с анализом компонент соседства и без него

Сравнение ближайших соседей с анализом компонент соседства и без него

SVM: Взвешенные образцы

SVM: Взвешенные образцы

Кэширование ближайших соседей

Кэширование ближайших соседей

Галерея, созданная Sphinx-Gallery