Курс преподаётся студентам третьего года обучения кафедры ИАД факультета ФУПМ МФТИ (ГУ).
Автор: Мурат Апишев (facebook, machinelearning.ru)
Правила курса:
- Курс проводится в формате "лекции + практические задания"
- Зачёт по курсу выставляется по результатам выполнения заданий
- Для доступа к зачёту необходимо выполнить все практические задания и получить за них в сумме не менее 35 баллов. Форма самого зачёта будет определена в дальнейшем, для гарантированного получения зачёта автоматом нужно набрать в сумме не менее 45 баллов.
- мотивация изучения языка
- язык Python, история, особенности, сравнение с другими языками
- основной дистрибутив, редакторы
- запуск скриптов
- введение в язык, базовый синтаксис
- оператор вывода, ввод с клавиатуры
- понятия объекта, переменной и типа
- операторы присваивания
- встроенные неизменяемые типы данных: числа, строки, кортежи
- встроенные изменяемые типы данных: списки, словари, множества
- работа с файлами, файловый менеджер контекста
- условный оператор, тернарный условный оператор
- операторы циклов while и for, операторы break, continue, else, pass
- именование переменных
- импорт модулей
- функции exec и eval
- стадии жизни объекта
- сборщик мусора, циклические и слабые ссылки, гарантии
- изменяемые и неизменяемые объекты, ссылки на них
- поверхностное и глубокое копирование
- идентификатор объекта, операторы равенства и идентичности
- атрибуты объекта, функция dir
- числовые типы данных
- побитовые операции
- операции над множествами
- продвинутое индексирование
- форматирование строк
- регулярные выражения, модули re и regex
- подробнее о файлах, модуль os.path
- функции range, zip, enumerate
- базовый синтаксис функций, возвращаемое значение, рекурсия
- передача аргументов в функцию
- области видимости переменных, глобальные переменные, правило LEGB
- ключевые слова global и nonlocal
- функции-замыкания
- анонимные функции
- функции map, filter, sorted, functools.reduce
- итерирование, функции iter и next
- генераторные функции, оператор yield
- модуль itertools
- парадигма объектно-ориентированного программирования
- понятия класса, объекта класса
- понятия интерфейса и абстрактного класса
- особенности реализации принципов ООП в Python
- методы __init__ и __new__, параметр self
- методы и атрибуты, функции для работы с атрибутами
- магические методы классов, их перегрузка, менеджеры контекста
- наследование
- перегрузка методов
- полиморфизм, duck typing
- сохранение объектов классов, модуль pickle
- исключения, обработка исключений
- проектирование кода
- виды отношений между классами
- принципы SOLID
- пример применения принципов для улучшения кода
- множественное наследование, порядок распознавания методов
- вызов родительских методов, функция super
- статические методы классов
- понятие шаблона проектирования
- шаблон singleton
- шаблон mixin
- шаблоны фасад, адаптер, DAO
- понятие фабрики, шаблон простая фабрика
- шаблоны фабричный метод и абстрактная фабрика
- шаблон декоратор
- декораторы функций и классов в Python
- метаклассы в Python
- представление плотных матриц в Python, базовые операции
- библиотека numpy, описание
- методы создания массива numpy.ndarray
- классы ndarray и matrix
- изменение размерности массивов
- индексирование массовов
- арфметические операции над массивами, broadcasting
- матричные операции над массивами, сравнение с наивной реализацией
- агрегирующие функции
- конкатенация массивов
- примеры дополнительных полезные функции numpy
- примеры постановок и решений задач на векторные и матричные операции
- DataFrame в библиотеке pandas
- доступ к элементам, индесирование
- pandas.DataSeries, операции над столбцами, выборка по условию
- создание и редактирование DataFrame, итерирование, конкатенация
- примеры полезных атрибутов и функций DataFrame
- базовая визуализация на основе DataFrame
- библиотека matplotlib
- простейшие графики в matplotlib, форматирование
- диаграммы scatter для отображения двумерной выборки
- введение в модуль scipy.linalg
- введение в модуль scipy.optimize
- введение в модуль scipy.stats
- понятие статистического теста, T-критерий
- разреженные матрицы в scipy.sparse
- напоминание основных базовых идей ML, библиотека sklearn
- напоминание: линейные модели, метрика качества классификации
- линейные модели в sklearn, выбор модели
- кроссвалидация, подбор параметров по сетке, подсчёт метрик
- лог-регрессия, линейный SVM, Kernel SVM в sklearn
- особенности данных для линейных моделей
- напоминание: метрические модели (knn, k-means)
- проблемы k-means, частичное обучение в sklearn
- напоминание: решающие деревья
- виды композиций в sklearn
- Random Forest в sklearn, основные параметры RF
- out-of-bag score для RF, оценка важности признаков
- градиентный бустинг в sklearn, основные параметры
- библиотека xgboost для градиентного бустинга, важные параметры
- библиотека catboost для градиентного бустинга
- задача понижения размерности, SVD разложение в sklearn