Примечание
Перейти в конец чтобы скачать полный пример кода или запустить этот пример в браузере через JupyterLite или Binder.
Регрессия методом ближайших соседей#
Демонстрация решения задачи регрессии с использованием 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()

Общее время выполнения скрипта: (0 минут 0,180 секунды)
Связанные примеры
Сравнение ближайших соседей с анализом компонент соседства и без него
Сравнение ближайших соседей с анализом компонент соседства и без него