ПочатиПочніть безкоштовно

Наскільки це оптимально?

Функція 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, а illiteracyx_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()
Редагувати та запускати код