Наука о данных/Итоговый проект

Материал из MathINFO
< Наука о данных
Версия от 17:14, 19 мая 2022; Ilya Schurov (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

Проекты выполняются индивидуально и самостоятельно. Проекты оцениваются по принципу peer review, в режиме двойного слепого оценивания. Каждый проект должен получить как минимум три оценки от других студентов, при этом в качестве итоговой оценки используется медиана. При выставлении оценок они должны быть обоснованы. Лектор имеет право пересмотреть оценку, выставленную в ходе peer review, при наличии явных ошибок оценивания (например, рецензент не заметил функцию, которая на самом деле была реализована). Если вы по какой-то причине не можете участвовать в процедуре рецензирования, сообщите об этом до момента сдачи работы. Для получения оценки за проект каждый студент обязан отрецензировать по крайней мере три (можно больше) другие работы.

При сдаче работа должна быть анонимизирована, то есть в ней не должно быть указано имя или другая информация, идентифицирующая автора. Просмотрите свою работу внимательно: ваше имя может случайно оказаться, например, среди системных предупреждений (в путях файлов), в ссылках на внешние ресурсы (если вы хотите использовать github-репозиторий, создайте новый аккаунт, не привязанный к вам), в API-ключах и т.д.

Любое использование чужого кода должно быть явно отмечено (см. ниже).

Проект должен быть независим от домашних заданий, выполняемых в ходе курса, то есть не должен заимствовать оттуда код, кроме тривиального.

Оценивание проекта

Оценка вычисляется как сумма баллов, набранных по отдельным критериям согласно таблице ниже, делённая на 1.5, и не может превосходить 12 баллов (по 10-балльной шкале).

Для удобства оценивания рекомендуется сопроводить проект описанием того, какие технологии и как в нём используются. Это позволит избежать ситуации, когда рецензент не заметил какой-либо технологии и из-за этого поставил заниженную оценку.

Рецензент имеет право не зачесть использование какой-либо технологии, если объём её использования незначительный (например, в pandas просто загружена таблица и найдено среднее значение одного столбца).

Критерий Баллы
Обработка данных с помощью pandas.
1 — использовалась в объёме, обсуждаемом в домашних заданиях (в задачах, средних по сложности); 2 — использовались продвинутые возможности pandas, соответствующие наиболее сложных задачам домашних работ или выходящие за рамки домашних работ.
Веб-скреппинг.
1 — использовался базовый веб-скреппинг с помощью beautifulsoup или robobrowser; 2 — использовались более сложные технологии скреппинга (Selenium, scrapy).
Работа с REST API (XML/JSON).
1 — использовались API примерно в объеме задач домашней работы; 2 — нетривиальное использование API, существенно выходящее за рамки обсуждавшегося в домашних работах; также 2 балла в случае использования недокументированного API (как тут).
Визуализация данных.
1 — использовались базовые визуализации типа «построен scatter plot»; 2 — более сложные визуализации, требующие написания нетривиального кода.
Математические возможности Python (содержательное использование numpy/scipy, SymPy и т.д. для решения математических задач).
1 — использовалось.
Streamlit. 1 — streamlit-проект размещён в интернете (скачивать ничего не надо, достаточно пройти по ссылке и всё запустится).
SQL. 1 — использовался
Регулярные выражения (для решения задач, для которых трудно придумать простое решение без регулярных выражений). 1 — использовались.
Работа с геоданными с помощью geopandas, shapely, folium и т.д. 1 — использовалась
Машинное обучение (построение предсказательных моделей типа регрессий или решающих деревьев). 1 — использовалось
Работа с графами (библиотека networkx). 1 — использовалась
Дополнительные технологии (библиотеки, не обсуждавшиеся в ходе курса — например, телеграм-боты, нейросети или ещё что-нибудь). 1 — использовались на уровне «взять пример из документации и адаптировать для своих нужд»; 2 — использовались на продвинутом уровне.
Объём (осмысленных строк кода, не считая import).
1 — 120 строк и больше.
Целостность проекта. 0 — проект выглядит как набор несвязанных компонент; 1 — проект выглядит целостным, все технологии используются по делу.
Общее впечатление.
0 — ну ок; 1 — вау, круто!

Об объёме

Объём проекта измеряется в «осмысленных самостоятельно написанных логических строках кода».

  • «Логических» означает, что если разделить строку на две с помощью кнопки Enter, нажимемой в нужных местах, то это всё равно одна строка.
  • «Осмысленного» означает, что если написать десять раз подряд строчку name = 'Alice', то это не считается.
  • «Самостоятельно написанного» означает, что вы можете копипастить код откуда-то ещё, если он вам нужен для работоспособности вашего проекта — например, со StackOverflow — но любая такая копипаста должна обязательно сопровождаться ссылкой на источник и в зачёт ваших строк не идёт. Такая копипаста должна начинаться с комментария ### FROM: (адрес источника) и заканчиваться комментарием ### END FROM. Неправильно оформленная копипаста приравнивается к плагиату.

Для вдохновения

На странице курса прошлого года опубликованы лучшие (по результату peer review) проекты. Нужно иметь в виду, что там были другие требования (другой набор технологий), и это был проект за один модуль, а не за два. Поэтому там в основном питон, pandas и веб-скреппинг, но обычно нет R, нет никакого SQL и т.д. У вас возможностей больше, но и сделать надо проект круче :)