Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Исправление ошибки размерности массива для метода Надарая-Ватсона
- def nadaraya_watson(X, y, X_test, bandwidth=0.5):
- # Преобразуем X и X_test к правильной двумерной форме
- X = X.reshape(-1, 1)
- X_test = X_test.reshape(-1, 1)
- # Используем KernelDensity для оценки
- kde = KernelDensity(kernel='gaussian', bandwidth=bandwidth).fit(X, y)
- log_density = kde.score_samples(X_test)
- return np.exp(log_density)
- # Генерация данных
- X, y = generate_data()
- X_noise, y_noise = generate_data(noise_level=1)
- X_test = np.linspace(0, 10, 500)
- # Применяем методы Надарая-Ватсона и Лоулесса
- y_nw = nadaraya_watson(X, y, X_test)
- y_lowess = lowess(X, y)
- # Визуализация результатов
- plt.figure(figsize=(12, 6))
- # Nadaraya-Watson
- plt.subplot(1, 2, 1)
- plt.scatter(X, y, color='blue', label='Data without noise')
- plt.scatter(X_noise, y_noise, color='orange', label='Data with noise')
- plt.plot(X_test, y_nw, color='red', label='Nadaraya-Watson')
- plt.title('Nadaraya-Watson Regression')
- plt.legend()
- # Lowess
- plt.subplot(1, 2, 2)
- plt.scatter(X, y, color='blue', label='Data without noise')
- plt.scatter(X_noise, y_noise, color='orange', label='Data with noise')
- plt.plot(X, y_lowess, color='green', label='Lowess')
- plt.title('Lowess Regression')
- plt.legend()
- plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement