Наскільки це оптимально?
Функція np.polyfit(), якою ви скористалися для отримання параметрів регресії, знаходить оптимальні нахил і перетин із віссю. Вона мінімізує суму квадратів залишків, також відому як RSS (residual sum of squares). У цій вправі ви побудуєте функцію, яку оптимізують, — RSS — залежно від параметра нахилу a. Для цього зафіксуйте перетин із віссю на значенні, яке ви отримали під час оптимізації. Потім побудуйте графік RSS відносно нахилу. Де він мінімальний?
Ця вправа є частиною курсу
Статистичне мислення в Python (Частина 2)
Інструкції до вправи
- Задайте значення нахилу для обчислення RSS. Використайте
np.linspace(), щоб отримати200точок у діапазоні між0та0.1. Наприклад, щоб отримати100точок у діапазоні між0та0.5, можна використатиnp.linspace()так:np.linspace(0, 0.5, 100). - Ініціалізуйте масив
rssдля зберігання RSS за допомогоюnp.empty_like()і масиву, створеного вище. Функціяempty_like()повертає новий масив із такою самою формою та типом, як у заданого масиву (у нашому випадкуa_vals). - Напишіть цикл
for, щоб обчислити суму RSS для кожного значення нахилу. Підказка: RSS задається виразомnp.sum((y_data - a * x_data - b)**2). Зміннаb, яку ви обчислили в попередній вправі, уже є у вашому просторі імен. Тутfertility— цеy_data, аilliteracy—x_data. - Побудуйте графік RSS (
rss) відносно нахилу (a_vals). - Натисніть Надіслати відповідь, щоб побачити графік!
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# Specify slopes to consider: a_vals
a_vals = ____
# Initialize sum of square of residuals: rss
rss = ____
# Compute sum of square of residuals for each value of a_vals
for i, a in enumerate(a_vals):
rss[i] = ____((____ - a*____ - b)**2)
# Plot the RSS
plt.plot(____, ____, '-')
plt.xlabel('slope (children per woman / percent illiterate)')
plt.ylabel('sum of square of residuals')
plt.show()