Программа курса на сайте Техносферы@Mail.Ru
data_mining_1/
Список домашних заданий
Реализации алгоритмов машинного обучения на python с проверкой на синтетических данных, применением на реальных данных и интерпретацией результата.hw1-kmeans/
(С вариациями K-Means++ и MiniBatchKMeans)
Проверка на описаяних интересов профилей студентов (даны ключевые слова, указанные в интересах профилей facebook)
hw2-clusters/
Проверка на данных Всемирного банка по странам
hw3-tree/
Проверка на задаче кредитного скоринга
Логистическая регрессия (обучение с L2 регуляризацией с помощью метода Mini Batch Stochastic Gradient Descent)
hw4-lin-model/
(с выводом правила обновлния весов)
Проверка: предсказание исхода раунда в Hearthstone
hw5-svm/
Проверка на частях текста "Войны и мира" на 2 языках (нужно использовать для определения языка SVM с ядром, зависящим от расстояния Левенштейна)
Программа курса на сайте Техносферы@Mail.Ru
intro/
Список домашних заданий
hw1_kuznetsova.ipynb
Выкачать с помощью API ВК места, где совершаются чекины; нанести точки на карту (folium); построить графики с распределением по типам объектов и т. д. (matplotlib)
hw2_kuznetsova.ipynb
Реализации K-Means c помощью:
- numpy
- Cython
flask/
bash_scripts/
Сравнить скорость выполнения задач с помощью чистого python. pandas и bash:
- У вас есть файлы лога с полями timestamp, IP, method (GET/POST). Поля разделены табуляциями '\t'. Имена файлов - logs_%Y-%m-%d__%h.tsv.
$ ls /logs/
...
logs_2017-10-31-08.tsv
logs_2017-10-31-09.tsv
logs_2017-10-31-10.tsv
logs_2017-10-31-11.tsv
logs_2017-10-31-12.tsv
...
Ваша задача - вывести топ-10 самых частых IP, которые выполняли метод GET с 10 до 17 часов 2017-10-31
-
Найти список всех файлов с расширением tsv, размер которых превышает 10 мб и запустить архивацию в фоновом режиме
-
В директории /data_for_cool_science/ лежат файлы следующуего формата: целевой класс, табуляция, список английский слов через запятую. Ваша задача, найти уникальные слова для класса bad, которые содержатся в трёх самых больших файлах. Помните, DOG и dog - одно и то же слово
Программа курса на сайте Техносферы@Mail.Ru
cpp/
Список домашних заданий
Копия папки `Kuznetsova/` из [репозитория курса](https://github.com/mtrempoltsev/msu_cpp_autumn_2017)02/
Используя метод рекурсивного спуска, написать простой калькулятор. Следует использовать функции, классы и переменные разделяемые между функциями использовать нельзя. Поддерживаемые операции: умножение, деление, сложение, вычитание, унарный минус.
03/
Рефакторим калькулятор!
Делаем класс, теперь вместо передачи результата через функции можно использовать поля класса Добавляем скобки ( ) Добавляем константы, например Pi
04/
Нужно написать класс-матрицу, тип элементов double. В конструкторе задается количество рядов и строк. Поддерживаются оперции: получить количество строк/столбцов, получить конкретный элемент, умножить на вектор (в качестве вектора использовать класс std::vector), умножить на число, сравнение на равенство/неравенство.
Чтобы реализовать семантику [][] понадобится прокси-класс. Оператор матрицы возращает другой класс, в котором тоже используется оператор [] и уже этот класс возвращает значение.
05/
Написать для класса матрицы из предыдущей работы конструкторы и операторы копирования и перемещения. Сделать класс шаблонным.
06/
Берем уже сделанный калькулятор, делаем из него шаблон. Пишем свойства для типов int, long, double (std::numeric_limits в помощь). Пишем стратегию parse, которая из строки делает число и проверяет, что оно в допустимых пределах. Собираем все вместе, теперь калькулятор должен уметь работать с int, long, double и проверять, что в выражениях числа не больше размера используемого типа (в качестве ошибки достаточно написать в консоль сообщение).
07/
Нужно переделать калькулятор из предыдущего занятия, а конкретней - добавить обработку ошибок с помощью исключений. Если где-то выделялась память в куче, переделать с использованием умных указателей.
08/
Написать свой контейнер Vector, аналогичный std::vector и итератор для него. Из поддерживаемых методов достаточно operator[], push_back, pop_back, empty, size, clear, begin, end, rbegin, rend, resize.
09/
Программе через аргументы командной строки передают два имени файлов. Первое имя - текстовый файл в котором слова разделены пробелами, его надо прочесть, составить частотный словарь "слово" - "сколько раз встречается". После этого надо отсортировать словарь по частоте и вывести во второй файл (его имя - второй аргумент).
10/
Классическая задача.
Два потока по очереди выводят в консоль сообщение. Первый выводит ping, второй выводит pong.
Вывод: ping pong ping pong ping pong …
Программа курса на сайте Техносферы@Mail.Ru
Репозиторий с курсовым проектом (сегментация для стикеров в телеграме)
Программа курса на сайте Техносферы@Mail.Ru
information_retrieval_1/
Список домашних заданий
hw1_sekitei/
С помощью алгоритма секитей (сад камней) извлечения признаков из урлов и
кластеризации определить, нужно ли качать входящий урл или нет. Датасет разделен на два
множества: тренировочное, три сайта, и валидационное, два сайта. Для каждого сайта нужно
будет максимально эффективно выбрать доступную квоту. (максимальное количество
урлов, которое может быть взято с данного сайта).
hw2_index/
Создание поискового индекса (со сжатием последовательности документов, соотвествующей терму), и разбор булевых запросов с поиском по индексу.
hw3_duplicates/
Дубликаты ищутся алгоритмом Бродера (сравниваются хэшированные шинглы - идущие внахлест подпоследовательности)
hw5_sentences/
Даны параграфы и индексы символов в них, нужно обучиться на размеченной выборке определять, является ли символ концом предложения.
hw6_spellchecker/
В этой домашней работе нужно разработать систему исправления опечаток. Компоненты системы:
модель языка, модель ошибок, генератор исправлений с помощью нечеткого поиска в бора, итерации, разные типы исправлений: словарные, split, join и раскладка
Программа курса на сайте Техносферы@Mail.Ru
Список домашних заданий
src/storage/
Написать реализацию интерфейса хранилища для кэша, используя любой ассоциативный контейнер из C++11. Хранилище должно реализовывать LRU логику для вытеснения, т.е удалять самый не используемый элемент.
src/network/blocking/
Задача в том, чтобы реализовать общение по memcached протоколу (сервер на блокирующем API).
Ожидаемое поведение:
[user@domain build] ./src/afina --network mt_block --storage mt_lru
Запустит приложение, к которому можно подсоединиться по порту 8080. Теперь туда можно отправлять команды на исполнение (выполнять действия над хранилищем).
[user@domain build] echo -n -e "set foo 0 0 6\r\nfooval\r\n" | nc localhost 8080
src/network/nonblocking/
Написать реализацию однопоточного асинхронного сервера.
src/coroutine/
Цель задания - написать движок для выполнения функций в режиме кооперативной многозадачности. Программа минимум - научиться переключаться между 2 функция во время их выполнения в рамках одного потока. (Реализовать переключение между функциями через управление слепком регистров)
Программа курса на сайте Техносферы@Mail.Ru
hadoop/
Список домашних заданий
inputformat/
Имеется дамп страниц новостного сайта. Ваша задача - реализовав собственный InputFormat, посчитать, в скольких документах встречается каждое слово. Реальное применение задачи - подсчет IDF по новостному корпусу.
Формат входных данных: сжатые с помощью deflate страницы находятся в файле .pkz. Как вы помните из лекции, такие файлы не разделяются, т.к. deflate не имеет зарезервированных последовательностей. Поэтому, отдельно расположен файл .pkz.idx, представляющий из себя размеры каждой записи [int, 4 байта].
hw2-clusters/
Вам даны пары <запрос, URL>, вам необходимо найти лучший запрос к каждому хосту. Напомню что, хост эта часть схемы URL: протокол://хост[:порт]/путь?параметры. Напомню, Hadoop не сортирует значения, и для решения "в лоб" нам необходимо держать все запросы соответствующие данному хосту в памяти. И разнообразие запросов к определенным хостам, таким как ru.wikipedia.org или otvet.mail.ru может сделать это проблемным. Поэтому необходимо использовать композитный ключ.
Программа курса на сайте Техносферы@Mail.Ru
data_mining_3/
Список домашних заданий
igbrt/
Первое домашнее задание посвящено реализации алгоритмов обучения для композиций моделей. Реализация алгоритма iGBRT с квадратичной фунцией потерь.
active/
Имеется неизвестная 10-мерная функция, с областью определения [0, 10] по всем координам, значения которой могут быть получены по индивидуальной внешней ссылке. Вам необходимо использовать данную ссылку для набора обучающих данных. (Используется подход query by comittee)
ials/
В третьем домашнем задании вам требуется реализовать алгоритм Implicit ALS для обучения модели matrix factorization.