Skip to content

Latest commit

 

History

History
201 lines (158 loc) · 11.9 KB

README.md

File metadata and controls

201 lines (158 loc) · 11.9 KB

Материалы по курсу "Практикум по программированию на языке Python"

Курс преподаётся студентам третьего года обучения кафедры ИАД факультета ФУПМ МФТИ (ГУ).

Автор: Мурат Апишев (facebook, machinelearning.ru)

Правила курса:

  • Курс проводится в формате "лекции + практические задания"
  • Зачёт по курсу выставляется по результатам выполнения заданий
  • Для доступа к зачёту необходимо выполнить все практические задания и получить за них в сумме не менее 35 баллов. Форма самого зачёта будет определена в дальнейшем, для гарантированного получения зачёта автоматом нужно набрать в сумме не менее 45 баллов.

Формулировки практических заданий:

Результаты выполнения практических заданий:

Тема 1: Введение в язык программирования Python

Содержание:

  • мотивация изучения языка
  • язык Python, история, особенности, сравнение с другими языками
  • основной дистрибутив, редакторы
  • запуск скриптов
  • введение в язык, базовый синтаксис
  • оператор вывода, ввод с клавиатуры
  • понятия объекта, переменной и типа
  • операторы присваивания
  • встроенные неизменяемые типы данных: числа, строки, кортежи
  • встроенные изменяемые типы данных: списки, словари, множества
  • работа с файлами, файловый менеджер контекста
  • условный оператор, тернарный условный оператор
  • операторы циклов while и for, операторы break, continue, else, pass
  • именование переменных
  • импорт модулей
  • функции exec и eval

Ссылки на материалы:

Тема 2: Модель памяти, операции над встроенными типами данных

Содержание:

  • стадии жизни объекта
  • сборщик мусора, циклические и слабые ссылки, гарантии
  • изменяемые и неизменяемые объекты, ссылки на них
  • поверхностное и глубокое копирование
  • идентификатор объекта, операторы равенства и идентичности
  • атрибуты объекта, функция dir
  • числовые типы данных
  • побитовые операции
  • операции над множествами
  • продвинутое индексирование
  • форматирование строк
  • регулярные выражения, модули re и regex
  • подробнее о файлах, модуль os.path

Ссылки на материалы:

Тема 3: Пользовательские и встроенные функции, итераторы и генераторы

Содержание:

  • функции range, zip, enumerate
  • базовый синтаксис функций, возвращаемое значение, рекурсия
  • передача аргументов в функцию
  • области видимости переменных, глобальные переменные, правило LEGB
  • ключевые слова global и nonlocal
  • функции-замыкания
  • анонимные функции
  • функции map, filter, sorted, functools.reduce
  • итерирование, функции iter и next
  • генераторные функции, оператор yield
  • модуль itertools

Ссылки на материалы:

Тема 4: Основы ООП, особенности ООП в Python

Содержание:

  • парадигма объектно-ориентированного программирования
  • понятия класса, объекта класса
  • понятия интерфейса и абстрактного класса
  • особенности реализации принципов ООП в Python
  • методы __init__ и __new__, параметр self
  • методы и атрибуты, функции для работы с атрибутами
  • магические методы классов, их перегрузка, менеджеры контекста
  • наследование
  • перегрузка методов
  • полиморфизм, duck typing
  • сохранение объектов классов, модуль pickle
  • исключения, обработка исключений

Ссылки на материалы:

Тема 5: Продвинутое использование ООП, проектирование кода

Содержание:

  • проектирование кода
  • виды отношений между классами
  • принципы SOLID
  • пример применения принципов для улучшения кода
  • множественное наследование, порядок распознавания методов
  • вызов родительских методов, функция super
  • статические методы классов
  • понятие шаблона проектирования
  • шаблон singleton
  • шаблон mixin
  • шаблоны фасад, адаптер, DAO
  • понятие фабрики, шаблон простая фабрика
  • шаблоны фабричный метод и абстрактная фабрика
  • шаблон декоратор
  • декораторы функций и классов в Python
  • метаклассы в Python

Ссылки на материалы:

Тема 6: Представление, обработка, анализ и визуализация данных

Содержание:

  • представление плотных матриц в Python, базовые операции
  • библиотека numpy, описание
  • методы создания массива numpy.ndarray
  • классы ndarray и matrix
  • изменение размерности массивов
  • индексирование массовов
  • арфметические операции над массивами, broadcasting
  • матричные операции над массивами, сравнение с наивной реализацией
  • агрегирующие функции
  • конкатенация массивов
  • примеры дополнительных полезные функции numpy
  • примеры постановок и решений задач на векторные и матричные операции
  • DataFrame в библиотеке pandas
  • доступ к элементам, индесирование
  • pandas.DataSeries, операции над столбцами, выборка по условию
  • создание и редактирование DataFrame, итерирование, конкатенация
  • примеры полезных атрибутов и функций DataFrame
  • базовая визуализация на основе DataFrame
  • библиотека matplotlib
  • простейшие графики в matplotlib, форматирование
  • диаграммы scatter для отображения двумерной выборки

Ссылки на материалы:

Тема 7: Введение в инструменты для оптимизации и машинного обучения

Содержание:

  • введение в модуль 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

Ссылки на материалы: