Почему это оптимально?
Функция 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, а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()