Машинное обучение (семинары, ВМК МГУ)/2014-2015 год, осень/Лабораторная работа 1

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
(Новая: Лабораторная работа посвящена освоению работы с методом k ближайших соседей. Формат отчета: iPython Notebook...)
Текущая версия (17:38, 28 сентября 2014) (править) (отменить)
 
(3 промежуточные версии не показаны)
Строка 1: Строка 1:
Лабораторная работа посвящена освоению работы с методом k ближайших соседей.
Лабораторная работа посвящена освоению работы с методом k ближайших соседей.
-
Формат отчета: iPython Notebook (.ipynb файл)
+
'''Формат отчета''': iPython Notebook (.ipynb файл)
-
Срок сдачи: 17 октября 2014, 8:45.
+
 
-
Штрафы: за каждый день просрочки из оценки вычитается 0.2 балла.
+
'''Срок сдачи''': 17 октября 2014, 8:45.
 +
 
 +
'''Штрафы''': за каждый день просрочки из оценки вычитается 0.2 балла.
== Задание ==
== Задание ==
# Сгенерируйте двумерную выборку. Координаты объектов первого класса возьмите из нормального распределения <tex>\mathcal{N}(0, 1)</tex>, второго класса - из <tex>\mathcal{N}(3, 2)</tex>. Сгенерируйте по 100 объектов каждого класса.
# Сгенерируйте двумерную выборку. Координаты объектов первого класса возьмите из нормального распределения <tex>\mathcal{N}(0, 1)</tex>, второго класса - из <tex>\mathcal{N}(3, 2)</tex>. Сгенерируйте по 100 объектов каждого класса.
-
''Полезные функции: numpy.random.normal''
+
#: ''Полезные функции: numpy.random.normal''
# Визуализируйте выборку.
# Визуализируйте выборку.
-
''Полезные функции: matplotlib.pyplot.scatter''
+
#: ''Полезные функции: matplotlib.pyplot.scatter''
# Обучите классификатор одного ближайшего соседа (1NN).
# Обучите классификатор одного ближайшего соседа (1NN).
-
''Полезные функции: sklearn.neighbors.KNeighborsClassifier''
+
#: ''Полезные функции: sklearn.neighbors.KNeighborsClassifier''
# Визуализируйте разделяющую поверхность. Для этого постройте равномерную сетку точек на плоскости, примените классификатор к каждой точке, и раскрасьте точки в цвета, соответствующие полученным классам.
# Визуализируйте разделяющую поверхность. Для этого постройте равномерную сетку точек на плоскости, примените классификатор к каждой точке, и раскрасьте точки в цвета, соответствующие полученным классам.
-
''Полезные функции: numpy.meshgrid, matplotlib.pyplot.pcolormesh''
+
#: ''Полезные функции: numpy.meshgrid, matplotlib.pyplot.pcolormesh''
# Проделайте предыдущий пункт для классификаторов 5, 10, 25, 50 ближайших соседей. Проинтерпретируйте результаты.
# Проделайте предыдущий пункт для классификаторов 5, 10, 25, 50 ближайших соседей. Проинтерпретируйте результаты.
# Выберите наилучший параметр k (число ближайших соседей) с помощью 5-fold cross-validation. Нарисуйте график зависимости качества кросс-валидации от числа ближайших соседей.
# Выберите наилучший параметр k (число ближайших соседей) с помощью 5-fold cross-validation. Нарисуйте график зависимости качества кросс-валидации от числа ближайших соседей.
-
''Полезные функции: sklearn.grid_search.GridSearchCV''
+
#: ''Полезные функции: sklearn.grid_search.GridSearchCV''
# Добавьте к предыдущему графику доверительные интервалы оценок кросс-валидации. Во время 5-fold cross-validation вычисляется 5 значений качества (т.к. делается 5 разбиений выборки на обучение и контроль) для каждого рассматриваемого значения параметра. Можно найти их среднее <tex>\mu</tex> (которое и является оценкой кросс-валидации) и стандартное отклонение <tex>\sigma</tex>. В качестве доверительного интервала возьмите <tex>(\mu - \sigma, \mu + \sigma)</tex>.
# Добавьте к предыдущему графику доверительные интервалы оценок кросс-валидации. Во время 5-fold cross-validation вычисляется 5 значений качества (т.к. делается 5 разбиений выборки на обучение и контроль) для каждого рассматриваемого значения параметра. Можно найти их среднее <tex>\mu</tex> (которое и является оценкой кросс-валидации) и стандартное отклонение <tex>\sigma</tex>. В качестве доверительного интервала возьмите <tex>(\mu - \sigma, \mu + \sigma)</tex>.
-
''Полезные функции: matplotlib.pyplot.fill_between''
+
#: ''Полезные функции: matplotlib.pyplot.fill_between''
# Разделите выборку на обучение и контроль (80% в обучение, 20% в контроль). Вычислите качество на контроле метода 5NN. Под качеством понимается доля правильно классифицированных объектов.
# Разделите выборку на обучение и контроль (80% в обучение, 20% в контроль). Вычислите качество на контроле метода 5NN. Под качеством понимается доля правильно классифицированных объектов.
-
Полезные функции: sklearn.cross_validation.train_test_split, sklearn.metrics.accuracy_score
+
#: ''Полезные функции: sklearn.cross_validation.train_test_split, sklearn.metrics.accuracy_score''
# Умножьте второй признак на 100. Вычислите качество метода 5NN на контроле. Изменилось ли оно? Чем вы можете это объяснить?
# Умножьте второй признак на 100. Вычислите качество метода 5NN на контроле. Изменилось ли оно? Чем вы можете это объяснить?

Текущая версия

Лабораторная работа посвящена освоению работы с методом k ближайших соседей.

Формат отчета: iPython Notebook (.ipynb файл)

Срок сдачи: 17 октября 2014, 8:45.

Штрафы: за каждый день просрочки из оценки вычитается 0.2 балла.

Задание

  1. Сгенерируйте двумерную выборку. Координаты объектов первого класса возьмите из нормального распределения \mathcal{N}(0, 1), второго класса - из \mathcal{N}(3, 2). Сгенерируйте по 100 объектов каждого класса.
    Полезные функции: numpy.random.normal
  2. Визуализируйте выборку.
    Полезные функции: matplotlib.pyplot.scatter
  3. Обучите классификатор одного ближайшего соседа (1NN).
    Полезные функции: sklearn.neighbors.KNeighborsClassifier
  4. Визуализируйте разделяющую поверхность. Для этого постройте равномерную сетку точек на плоскости, примените классификатор к каждой точке, и раскрасьте точки в цвета, соответствующие полученным классам.
    Полезные функции: numpy.meshgrid, matplotlib.pyplot.pcolormesh
  5. Проделайте предыдущий пункт для классификаторов 5, 10, 25, 50 ближайших соседей. Проинтерпретируйте результаты.
  6. Выберите наилучший параметр k (число ближайших соседей) с помощью 5-fold cross-validation. Нарисуйте график зависимости качества кросс-валидации от числа ближайших соседей.
    Полезные функции: sklearn.grid_search.GridSearchCV
  7. Добавьте к предыдущему графику доверительные интервалы оценок кросс-валидации. Во время 5-fold cross-validation вычисляется 5 значений качества (т.к. делается 5 разбиений выборки на обучение и контроль) для каждого рассматриваемого значения параметра. Можно найти их среднее \mu (которое и является оценкой кросс-валидации) и стандартное отклонение \sigma. В качестве доверительного интервала возьмите (\mu - \sigma, \mu + \sigma).
    Полезные функции: matplotlib.pyplot.fill_between
  8. Разделите выборку на обучение и контроль (80% в обучение, 20% в контроль). Вычислите качество на контроле метода 5NN. Под качеством понимается доля правильно классифицированных объектов.
    Полезные функции: sklearn.cross_validation.train_test_split, sklearn.metrics.accuracy_score
  9. Умножьте второй признак на 100. Вычислите качество метода 5NN на контроле. Изменилось ли оно? Чем вы можете это объяснить?
Личные инструменты