НачатьНачать бесплатно

Почему это оптимально?

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