Menu
CoddyTech

Обучение и предсказание

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

Каждая модель scikit-learn работает с помощью двух вызовов. fit изучает обучающие строки и их метки; predict присваивает метки строкам, которые модель никогда не видела:

Схема: шесть питомцев, X_train с весом и длиной ушей рядом с y_train, три кошки и три собаки, проходят через fit и попадают в модель. Два новых питомца, X_new, проходят через predict с помощью модели и выходят как кошка и собака

Модель из первого урока этого путешествия — метод k ближайших соседей: она присваивает строке метку, как у ближайших к ней обучающих строк. Домашние животные по весу (кг) и длине ушей (см):

from sklearn.neighbors import KNeighborsClassifier

X_train = np.array([[4, 6], [5, 7], [3, 5], [30, 10], [25, 12], [35, 11]])
y_train = np.array(["cat", "cat", "cat", "dog", "dog", "dog"])
model = KNeighborsClassifier()
model.fit(X_train, y_train)
print(model.predict([[6, 6], [28, 11]]))

Это выводит ['cat' 'dog']. Новые строки добавляются в виде таблицы, по одной строке на питомца.

Создать, обучить, предсказать: каждая модель в этом разделе следует этим трём шагам.

challenge icon

Задание

Легко

Приложение клуба любителей наблюдения за птицами определяет названия птиц по размаху крыльев и весу. Стартовый код разделяет данные клуба из birds.csv и считывает птиц сегодняшней прогулки в таблицу spotted.

  1. Создай модель k-ближайших соседей и обучи её на тренировочных данных о птицах.
  2. Предскажи виды всех замеченных птиц за один вызов.
  3. Выведи по одной строке для каждой птицы, как показано ниже.

Для трёх птиц во время другой прогулки:

Bird 1: sparrow
Bird 2: blackbird
Bird 3: robin

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

import pandas as pd
from sklearn.model_selection import train_test_split

# По одной строке на каждую птицу, которую определил клуб: размах крыльев в см, вес в граммах
birds = pd.read_csv("birds.csv")
X = birds[["wingspan_cm", "weight_g"]]
y = birds["species"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)

# Сегодняшняя вечерняя прогулка: сначала количество птиц, затем размах крыльев и вес каждой
count = int(input())
spans = []
weights = []
for i in range(count):
    spans.append(float(input()))
    weights.append(float(input()))
spotted = pd.DataFrame({"wingspan_cm": spans, "weight_g": weights})

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

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

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

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