Menu
CoddyTech

Несколько признаков

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

Цена дома зависит не только от площади: долгая прогулка до станции снижает её. Обучаясь на обоих факторах, модель проводит параллельные линии:

Десять домов показаны точками: цена в зависимости от площади; дома рядом со станцией обозначены синим цветом, а дома подальше — оранжевыми квадратами. Две параллельные линии модели — для прогулки длительностью 5 и 25 минут; линия для 25 минут проходит на 102 тысячи долларов ниже при любой площади

В коде X получает оба столбца, а coef_ — один вес для каждого признака:

X = houses[["area_m2", "minutes_walk"]]
model = LinearRegression()
model.fit(X, houses["price"])
print(np.round(model.coef_, 1))

Это выводит:

[ 2.6 -5.1]

Веса соответствуют столбцам X. Каждый дополнительный м² добавляет 2.6 тысячи долларов; каждая дополнительная минута ходьбы уменьшает цену на 5.1 тысячи долларов, если значение другого признака не меняется.

Единица измерения веса — это единица целевого показателя на единицу его признака: тысячи на м², на минуту.

challenge icon

Задание

Средне

Кейтеринг рассчитывает стоимость новых мероприятий на основе 40 прошлых, записанных в events.csv: guests, courses, months_ahead (за сколько времени до мероприятия его забронировали) и cost в долларах. Стартовый код считывает данные о новом мероприятии в new_event.

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

Для другого кейтеринга:

Each extra guest adds 41.5 dollars
Each extra course adds 198.25 dollars
Each extra month booked ahead takes off 22.8 dollars
Quote: 4312.6 dollars

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

import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression

# Одна строка на каждое прошедшее мероприятие: количество гостей, количество блюд, число месяцев до мероприятия на момент бронирования, стоимость в долларах
events = pd.read_csv("events.csv")
features = ["guests", "courses", "months_ahead"]
units = ["guest", "course", "month booked ahead"]
# Новое мероприятие в виде таблицы с одной строкой
guests = int(input())
courses = int(input())
months = int(input())
new_event = pd.DataFrame({"guests": [guests], "courses": [courses], "months_ahead": [months]})

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

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

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

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