Menu
CoddyTech

Метод наименьших квадратов

Часть раздела Статистика для машинного обучения путешествия по Machine Learning на Coddy. Урок 36 из 64.

Можно перебирать линии бесконечно. np.polyfit(x, y, 1) сразу находит лучшую: линию с наименьшей суммой квадратов остатков. Вот глубина снега во время шторма:

hours = np.array([1, 2, 3, 5, 6])
depth = np.array([14, 22, 35, 52, 61])
slope, intercept = np.polyfit(hours, depth, 1)
print(np.round(slope, 2), np.round(intercept, 2))

Это выводит 9.5 4.5: примерно на 9.5 см больше снега в час и 4.5 см в час 0. Ни одна другая линия не проходит ближе:

Глубина снега в зависимости от количества часов: пять точек и три линии — две пунктирные гипотезы с суммами квадратов остатков 159 и 18 и толстая линия polyfit со значением 6.5

1 задаёт прямую линию, и сначала указывается x. Это линейная регрессия — первая модель, которую вы обучите в разделе 3.

challenge icon

Задание

Средне

Производитель дронов хочет узнать, какой параметр лучше всего предсказывает время полёта. В drones.csv содержатся данные о 15 полётах: payload_g, wind_kmh и flight_min. Стартовый код загружает файл и определяет ssr(x, y, slope, intercept).

  1. Для каждого столбца в columns постройте линию, предсказывающую flight_min по этому столбцу.
  2. Выведите её уравнение и SSR, как показано ниже: наклон с точностью до 3 знаков после запятой, свободный член и SSR — до 2.
  3. Выведите столбец с меньшим SSR.

Для другого дрона:

payload_g: flight_min = -0.001 * payload_g + 21.55, SSR 164.94
wind_kmh: flight_min = -0.481 * wind_kmh + 28.13, SSR 9.1
Better predictor: wind_kmh

Попробуйте сами

import numpy as np
import pandas as pd


# Возвращает сумму квадратов остатков для прямой slope * x + intercept (урок 35)
def ssr(x, y, slope, intercept):
    return ((y - (slope * x + intercept)) ** 2).sum()


drones = pd.read_csv("drones.csv")
columns = ["payload_g", "wind_kmh"]

# Напишите свой код ниже
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Статистика для машинного обучения

Потренируйтесь самостоятельно: Онлайн-компилятор Python