Menu
CoddyTech

Предсказание чисел

Часть раздела Обучение с учителем путешествия по Machine Learning на Coddy. Урок 11 из 58.

Модели в этой главе предсказывают числа. К концу главы график ошибок модели покажет, что она не учла:

График ошибок модели в зависимости от температуры: точки образуют дугу от -280 до +140 и обратно, вокруг пунктирной линии на 0, с подписью: модель не учла кривую

Начни с прямой, которую ты знаешь. LinearRegression обучается на таблице X: одна строка на образец и один столбец на признак:

from sklearn.linear_model import LinearRegression

area = np.array([60, 75, 90, 110, 130, 150])  # дома, в м²
price = np.array([215, 248, 290, 335, 385, 428])  # тысяч долларов
X = area.reshape(-1, 1)  # 6 строк, 1 столбец
model = LinearRegression()
model.fit(X, price)
print(np.round(model.coef_, 2), np.round(model.intercept_, 2))
print(np.round(np.polyfit(area, price, 1), 2))

Это выводит одну и ту же строку дважды:

[2.39] 71.59
[ 2.39 71.59]

Шесть домов в виде точек, цена в зависимости от площади, толстая оранжевая линия LinearRegression и пунктирная чёрная линия np.polyfit точно накладываются друг на друга: price = 2.39 * area + 71.59

В coef_ хранится один коэффициент наклона на каждый признак: каждый дополнительный м² добавляет 2.39 тысячи долларов. intercept_ — это начало прямой при 0 м². Затем model.predict([[100]]) оценивает 100 м² примерно в 310.85 тысячи.

challenge icon

Задание

Средне

Типография никогда не публиковала свои цены, но у тебя есть данные о 10 предыдущих заказах: pages и price в долларах. Программа считывает количество страниц нового заказа.

  1. Обучи LinearRegression на количестве страниц, представленном в виде таблицы с одним столбцом.
  2. Выведи цену за страницу (3 знака после запятой) и плату за настройку — свободный член (2 знака после запятой).
  3. Выведи предсказанную цену нового заказа (2 знака после запятой).

Для другой типографии и 120:

Per page: 0.095 dollars
Setup fee: 4.1 dollars
120 pages: 15.5 dollars

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

import numpy as np
from sklearn.linear_model import LinearRegression

# 10 предыдущих заданий на печать: количество напечатанных страниц и уплаченная сумма в долларах
pages = np.array([40, 75, 120, 160, 210, 260, 300, 380, 450, 520])
price = np.array([7.38, 12.6, 17.65, 20.69, 26.63, 32.18, 37.76, 46.4, 55.17, 60.89])
new_pages = int(input())

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

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

Все уроки раздела Обучение с учителем

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