Разница между страницами «Науки о данных/Весенний проект» и «Науки о данных/Летний проект»

Материал из MathINFO
< Науки о данных(Различия между страницами)
Перейти к навигации Перейти к поиску
 
 
Строка 8: Строка 8:
  
 
Для удобства оценивания рекомендуется сопроводить проект описанием того, какие технологии и как в нём используются. Это позволит избежать ситуации, когда рецензент не заметил какой-либо технологии и из-за этого поставил заниженную оценку.
 
Для удобства оценивания рекомендуется сопроводить проект описанием того, какие технологии и как в нём используются. Это позволит избежать ситуации, когда рецензент не заметил какой-либо технологии и из-за этого поставил заниженную оценку.
 +
 +
===О базах данных===
 +
Для работы с базой данных вы можете использовать SQLite и создать свою базу (например, с помощью <code>pandas.DataFrame.to_sql</code>), либо использовать публичные датасеты в [https://console.cloud.google.com/marketplace/browse?filter=solution-type:dataset Google BigQuery]. В последнем случае вам надо получить [https://cloud.google.com/bigquery/docs/authentication/service-account-file#bigquery_client_json_credentials-python Service Account Key File] и использовать его с помощью библиотеки <code>google-cloud-bigquery</code> (см. пример [https://cloud.google.com/bigquery/docs/reference/libraries здесь]). Использование BigQuery является бесплатным в рамках некоторой квоты (которой нам скорее всего хватит для учебного проекта).
  
 
{| class="wikitable"
 
{| class="wikitable"
Строка 15: Строка 18:
  
 
|-
 
|-
| Обработка данных с помощью pandas.<br>
+
| Базовая работа с R<br>
| 0 — не использовалась; 1 — использовалась в объёме, обсуждаемом в домашних заданиях (в задачах, средних по сложности); 2 — использовались продвинутые возможности pandas, соответствующие наиболее сложных задачам домашних работ или выходящие за рамки домашних работ.<br>
+
| 1 — Загрузка данных из csv, работа с векторами и датафреймами без использования tidyverse.<br>
 +
|-
 +
| Программирование в R<br>
 +
| 1 — Использованы циклы, проверка условий и функции.<br>
 +
|-
 +
| Обработка данных с помощью tidyverse.<br>
 +
| 0 — не использовалась; 1 — использовалась примерно в объёме одной задачи домашней работы; 2 — использовалось что-то более сложное и/или объёмное.<br>
 
|-
 
|-
| Веб-скреппинг.<br>
+
| Визуализация с помощью ggplot2<br>
| 0 — не использовался; 1 — использовался базовый веб-скреппинг с помощью beautifulsoup или robobrowser; 2 — использовались более сложные технологии скреппинга (Selenium, scrapy и др.)<br>
+
| 0 — не использовалась; 1 — простая визуализация на уровне «построен scatter-plot»; 2 — более сложная визуализация (картинка состоит из нескольких «слоёв» (<code>geom_*</code>)).<br>
 
|-
 
|-
| Работа с REST API (XML/JSON).<br>
+
| Визуализация с помощью дополнений к ggplot2<br>
| 0 — не использовалась; 1 — использовались API примерно в объеме задач домашней работы; 2 — нетривиальное использование API, существенно выходящее за рамки обсуждавшегося в домашних работах.<br>
+
| 1 — использовалось любое дополнение [http://www.ggplot2-exts.org/gallery/ отсюда].<br>
 
|-
 
|-
| Визуализация данных.<br>
+
| Базовая работа с SQL<br>
| 0 — не использовалась; 1 — базовые визуализации типа «построен scatter plot»; 2 — более сложные визуализации, требующие написания нетривиального кода или использования библиотек, кроме базовых возможностей <code>pandas</code> и <code>matplotlib.pyplot</code>. Например, подойдёт seaborn или plotly (примеры, выходящие за рамки копипасты из документации).<br>
+
| 1 — работа с SQL на уровне «Выбрать строки по условию» (<code>SELECT</code>, <code>WHERE</code>, <code>LIMIT</code>).<br>
 
|-
 
|-
| Математические возможности Python (содержательное использование numpy/scipy, SymPy и т.д. для решения математических задач)<br>
+
| SQL: Группировка и агрегирование<br>
| 0 не использовалось, 1 — использовалось.<br>
+
| 1 — использовалось всё перечисленное: агрегирующие функции, <code>GROUP BY</code> и <code>HAVING</code>.<br>
 
|-
 
|-
| Другие технологии (пока не обсуждавшиеся в курсе, но связанные с обработкой данных с помощью Python, R или других языков программирования) например, телеграм-боты или методы машинного обучения или регулярные выражения или ещё что-нибудь.<br>
+
| SQL: <code>JOIN</code> и subqueries<br>
| 0 не использовались; 1 — использовались на базовом уровне («скопировать пример из документации и заставить его работать»), 2 — использовались на продвинутом уровне.<br>
+
| 1 — использовались <code>JOIN</code>'ы или subquerie.<br>
 +
|-
 +
| SQLAlchemy<br>
 +
| 1 использовалось.<br>
 +
|-
 +
| Регулярные выражения.<br>
 +
| 1 — использовались для решения какой-нибудь практической задачи<br>
 +
|-
 +
| Обработка текстовых данных<br>
 +
| 1 — использовались методы обработки естественного языка (например, библиотеки <code>pymorphy2</code>, <code>natasha</code> и <code>TextBlob</code>, обсуждавшиеся на лекции)<br>
 
|-
 
|-
 
| Объём (осмысленных строк кода).<br>
 
| Объём (осмысленных строк кода).<br>
| 0 — 0-75; 1 — 75+.<br>
+
| 0 — 0-50; 1 — 50+.<br>
|-
 
| Общее впечатление.<br>
 
| 0 — ну ок; 1 — вау, круто!<br>
 
 
|}
 
|}
 
===Об объёме===
 
===Об объёме===
 
Объём проекта измеряется в «осмысленных самостоятельно написанных логических строках кода».
 
Объём проекта измеряется в «осмысленных самостоятельно написанных логических строках кода».
  
* «Логических» означает, что если разделить строку на две с помощью кнопки Enter, нажимемой в нужных местах, то это всё равно одна строка.
+
* «Логических» означает, что если разделить строку на две с помощью кнопки Enter, нажимемой в нужных местах, то это всё равно одна строка. В SQL каждая clause может считаться отдельной строкой.
  
 
* «Осмысленного» означает, что если написать десять раз подряд строчку <code>name = 'Alice'</code>, то это не считается.
 
* «Осмысленного» означает, что если написать десять раз подряд строчку <code>name = 'Alice'</code>, то это не считается.
  
 
* «Самостоятельно написанного» означает, что вы можете копипастить код откуда-то ещё, если он вам нужен для работоспособности вашего проекта — например, со StackOverflow — но любая такая копипаста должна обязательно сопровождаться ссылкой на источник и в зачёт ваших строк не идёт. Такая копипаста должна начинаться с комментария <code>### FROM: (адрес источника)</code> и заканчиваться комментарием <code>### END FROM</code>. Неправильно оформленная копипаста приравнивается к плагиату.
 
* «Самостоятельно написанного» означает, что вы можете копипастить код откуда-то ещё, если он вам нужен для работоспособности вашего проекта — например, со StackOverflow — но любая такая копипаста должна обязательно сопровождаться ссылкой на источник и в зачёт ваших строк не идёт. Такая копипаста должна начинаться с комментария <code>### FROM: (адрес источника)</code> и заканчиваться комментарием <code>### END FROM</code>. Неправильно оформленная копипаста приравнивается к плагиату.

Версия 15:05, 21 апреля 2020

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

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

Требования к проекту

Оценка вычисляется как сумма баллов, набранных по отдельным критериям согласно таблице ниже, и не может превосходить 12 баллов.

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

О базах данных

Для работы с базой данных вы можете использовать SQLite и создать свою базу (например, с помощью pandas.DataFrame.to_sql), либо использовать публичные датасеты в Google BigQuery. В последнем случае вам надо получить Service Account Key File и использовать его с помощью библиотеки google-cloud-bigquery (см. пример здесь). Использование BigQuery является бесплатным в рамках некоторой квоты (которой нам скорее всего хватит для учебного проекта).

Критерий Баллы
Базовая работа с R
1 — Загрузка данных из csv, работа с векторами и датафреймами без использования tidyverse.
Программирование в R
1 — Использованы циклы, проверка условий и функции.
Обработка данных с помощью tidyverse.
0 — не использовалась; 1 — использовалась примерно в объёме одной задачи домашней работы; 2 — использовалось что-то более сложное и/или объёмное.
Визуализация с помощью ggplot2
0 — не использовалась; 1 — простая визуализация на уровне «построен scatter-plot»; 2 — более сложная визуализация (картинка состоит из нескольких «слоёв» (geom_*)).
Визуализация с помощью дополнений к ggplot2
1 — использовалось любое дополнение отсюда.
Базовая работа с SQL
1 — работа с SQL на уровне «Выбрать строки по условию» (SELECT, WHERE, LIMIT).
SQL: Группировка и агрегирование
1 — использовалось всё перечисленное: агрегирующие функции, GROUP BY и HAVING.
SQL: JOIN и subqueries
1 — использовались JOIN'ы или subquerie.
SQLAlchemy
1 — использовалось.
Регулярные выражения.
1 — использовались для решения какой-нибудь практической задачи
Обработка текстовых данных
1 — использовались методы обработки естественного языка (например, библиотеки pymorphy2, natasha и TextBlob, обсуждавшиеся на лекции)
Объём (осмысленных строк кода).
0 — 0-50; 1 — 50+.

Об объёме

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

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