Задание № 1

1) Вспомните, что такое задача классификации, задача восстановления регрессии и задача кластеризации. Что такое объекты (instances, samples) и их признаки (features, attributes)?

2) Сайт UCI Machine Learning Repository содержит коллекцию баз данных для тестирования алгоритмов машинного обучения. Посетите этот сайт. Найдите там какую-нибудь базу, для которой рассматривается 1) задача классификации, 2) задача восстановления регрессии, 3) задача кластеризации. Сколько она содержит примеров? Сколько используется признаков? Какие они (категориальные или/и числовые)?

3) Рассмотрите пример Iris. Процитируем Википедию:

Ирисы Фишера состоят из данных о 150 экземплярах ириса, по 50 экземпляров из трёх видов — Ирис щетинистый (Iris setosa), Ирис виргинский (Iris virginica) и Ирис разноцветный (Iris versicolor). Для каждого экземпляра измерялись четыре характеристики (в сантиметрах):

  • Длина наружной доли околоцветника (англ. sepal length);

  • Ширина наружной доли околоцветника (англ. sepal width);

  • Длина внутренней доли околоцветника (англ. petal length);

  • Ширина внутренней доли околоцветника (англ. petal width).

На основании этого набора данных требуется построить правило классификации, определяющее вид растения по данным измерений. Это задача многоклассовой классификации, так как имеется три класса — три вида ириса.

4) Загрузите эти данные. Например, так:

In [ ]:
import numpy as np
import urllib
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"
raw_data = urllib.urlopen(url)
X = np.loadtxt(raw_data, delimiter = ",", usecols = range(4)) # загрузка первых 4 столбцов
raw_data = urllib.urlopen(url)
y = np.loadtxt(raw_data, delimiter = ",", dtype = str, usecols = [4]) # загрузка последнего столбца
N, d = X.shape

Теперь X - это матрица размера N$\times$d, содержащая значения всех признаков для каждого объекта, а у - вектор длины N с названиями видов цветка.

In [ ]:
print N, d # Количество объектов и количество признаков
In [ ]:
print X
print y

В любом случае, разберитесь в этом коде. Вы можете предложить свой способ, как загрузить данные.

Замечу, что данные можно было скачать вручную и сохранить в файле у себя на компьютере. Дальше, чтобы прочитать их из файла, снова используйте функцию np.loadtxt

5) Напишите код, рисующий диаграмму рассеяния для задаваемой пары признаков. Для каждого вида ириса используйте свой цвет. Добавьте подписи к графикам и легенду.

6) Разбейте данные на обучающую и тестовую выборку. Методом ближайших соседей обучите модель модель. Постройте графики зависимости ошибки на обучающей и тестовой выборках от числа используемых соседей.