Advertisement
fevzi02

Untitled

Dec 12th, 2023
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.47 KB | None | 0 0
  1. # Исправление ошибки размерности массива для метода Надарая-Ватсона
  2.  
  3. def nadaraya_watson(X, y, X_test, bandwidth=0.5):
  4. # Преобразуем X и X_test к правильной двумерной форме
  5. X = X.reshape(-1, 1)
  6. X_test = X_test.reshape(-1, 1)
  7.  
  8. # Используем KernelDensity для оценки
  9. kde = KernelDensity(kernel='gaussian', bandwidth=bandwidth).fit(X, y)
  10. log_density = kde.score_samples(X_test)
  11. return np.exp(log_density)
  12.  
  13. # Генерация данных
  14. X, y = generate_data()
  15. X_noise, y_noise = generate_data(noise_level=1)
  16. X_test = np.linspace(0, 10, 500)
  17.  
  18. # Применяем методы Надарая-Ватсона и Лоулесса
  19. y_nw = nadaraya_watson(X, y, X_test)
  20. y_lowess = lowess(X, y)
  21.  
  22. # Визуализация результатов
  23. plt.figure(figsize=(12, 6))
  24.  
  25. # Nadaraya-Watson
  26. plt.subplot(1, 2, 1)
  27. plt.scatter(X, y, color='blue', label='Data without noise')
  28. plt.scatter(X_noise, y_noise, color='orange', label='Data with noise')
  29. plt.plot(X_test, y_nw, color='red', label='Nadaraya-Watson')
  30. plt.title('Nadaraya-Watson Regression')
  31. plt.legend()
  32.  
  33. # Lowess
  34. plt.subplot(1, 2, 2)
  35. plt.scatter(X, y, color='blue', label='Data without noise')
  36. plt.scatter(X_noise, y_noise, color='orange', label='Data with noise')
  37. plt.plot(X, y_lowess, color='green', label='Lowess')
  38. plt.title('Lowess Regression')
  39. plt.legend()
  40.  
  41. plt.show()
  42.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement