Menu
CoddyTech

Построение линии аппроксимации

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

Два числа описывают аппроксимацию; только график показывает, соответствует ли она данным. На кухне измерили время шести кипячений чайника. Начерти линию на том же ax, что и точечную диаграмму:

liters = np.array([0.5, 0.8, 1.0, 1.2, 1.5, 1.7])
minutes = np.array([1.6, 2.4, 2.7, 3.3, 3.9, 4.5])
slope, intercept = np.polyfit(liters, minutes, 1)
xs = np.linspace(liters.min(), liters.max(), 50)
fig, ax = plt.subplots()
ax.scatter(liters, minutes, label="Boils")
ax.plot(xs, slope * xs + intercept, color="C1", label="Fit")
ax.legend()
plt.show()

xs проходит от наименьшего x до наибольшего, поэтому линия начинается и заканчивается там же, где и данные:

Шесть кипячений чайника в виде точек: время кипячения в минутах в зависимости от количества воды в литрах; значения возрастают от 1.6 до 4.5 минуты, а через них проходит оранжевая линия наилучшего соответствия от 0.5 до 1.7 литра

Изобразить предсказания модели на графике вместе с данными — самый быстрый способ проверить, что она научилась чему-то разумному. Если линия не проходит через точки, значит, модель обучилась неправильно.

challenge icon

Задание

Средне

Управляющий зданием измерил время 12 поездок на лифте: пройденные этажи floors и затраченное время в секундах seconds. Стартовый код настраивает график с заголовком и подписями осей.

  1. Подбери прямую, которая предсказывает seconds по floors.
  2. Изобрази поездки точечной диаграммой с подписью Rides, а прямую — с подписью Fit, от наименьшего количества этажей до наибольшего.
  3. Добавь легенду и покажи график.

Ничего не выводится; Coddy описывает твой график. График для другого здания выглядит так:

График с заголовком Elevator Rides: восемь точек, растущих от 14 секунд при 2 этажах до 51 секунды при 20 этажах, прямая аппроксимации от этажа первой точки до этажа последней точки и легенда с названиями Rides и Fit

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

import numpy as np
import matplotlib.pyplot as plt

floors = np.array([3, 7, 1, 12, 5, 9, 15, 2, 10, 6, 13, 8])
seconds = np.array([15.3, 27.0, 12.4, 36.0, 19.5, 28.8, 44.9, 12.7, 33.2, 19.4, 41.7, 27.0])
# Не изменяйте строки ниже
fig, ax = plt.subplots()
ax.set_title("Elevator Rides")
ax.set_xlabel("Floors")
ax.set_ylabel("Seconds")

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

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

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

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