Разница между страницами «Науки о данных» и «Дифференциальные уравнения (ФКН)/Демонстрационный проект»

Материал из MathINFO
(Различия между страницами)
Перейти к навигации Перейти к поиску
 
(Новая страница: «## Общее описание Вам необходимо подготовить интерактивную демонстрацию для какого-либ...»)
 
Строка 1: Строка 1:
Курс ведёт Илья Щуров.
+
## Общее описание
  
 +
Вам необходимо подготовить интерактивную демонстрацию для какого-либо известного дифференциального уравнения или системы, задаваемой дифференциальными уравнениями. Она должна быть выполнена в виде веб-страницы, для просмотра которой не нужно устанавливать никаких дополнительных приложений (то есть пользоваться можно только HTML/JavaScript).
  
==Инструменты==
+
Вы можете использовать любые подходящие для этого библиотеки общего пользования (в т.ч. для решения дифференциальных уравнений), однако код, непосредственно анализирующий / решающий выбранную систему, должен быть написан вами самостоятельно.
===Python===
 
Мы используем Python версии 3 и оболочку Jupyter (ранее известную как IPython Notebook). Чтобы их установить, проще всего скачать пакет [http://anaconda.com/downloads Anaconda]]. Обратите внимание: вам нужна версия с Python 3.x (в настоящее время — Python 3.7).
 
  
После установки Anaconda у вас появится:
+
На странице должно быть представлено описание системы, её физичесий / механический / биологический / etc. смысл, математические свойства решений (если известны) — всё, что делает эту систему интересной. Предполагается, что вы изучите литературу, посвященную выбранной системе, и сделаете на её основе научно-популярную статью с интерактивными иллюстрациями. Можно представлять себе энциклопедическую статью или главу из учебника, но использующую возможности современных технологий. Весь текст должен быть написан самостоятельно, но при этом опираться на качественные источники, которые должны быть явно указаны.
  
* Под Windows: в меню «Пуск» пункт «Anaconda», в нём подпункт «IPython Notebook».
+
У читателя должна быть возможность задавать параметры системы (начальные условия, другие параметры) и видеть, как система от них зависит. Например, выбрать начальные условия и построить траекторию или анимацию, показывающую динамику системы; или выбрать дополнительные параметры и увидеть, как меняется фазовый портрет. По формату хочется что-то вроде статьи на http://distill.pub, только про дифференциальные уравнения.
  
* Под Mac OS X: приложение Anaconda Launcher, в нём пункт ipython-notebook.
+
На любом этапе работы вы можете советоваться с лектором по поводу проекта.
  
После запуска IPython Notebook у вас откроется окно браузера (и лучше пусть это будет не Internet Explorer, под ним IPython Notebook работает с некоторым скрипом, а иногда не работает) со списком файлов. В нём надо выбрать New → Python 3. Откроется новая вкладка браузера, в ней будет запущен пустой notebook, состоящий из отдельных ячеек (cells). В ячейку с кодом можно вписать код и нажать Shift+Enter — он выполнится и вам покажут тут же результат.
+
## Примеры систем
 
+
Двойной маятник (double pendulum).
Для установки дополнительных пакетов вам необходимо открыть консоль (это может быть Anaconda Prompt под Windows или стандартный «Терминал» под Mac OS или Linux) и набрать команду <code>conda install <название пакета></code> или <code>pip install <название пакета></code> (например, <code>conda install seaborn</code>).
+
Задача двух тел.
 
+
Задача трёх (или n, n>2) тел.
Вы также можете использовать [https://colab.research.google.com Google Colaboratory]] (но интерфейс там будет немножко отличаться от интерфейса Jupyter).
+
Модель Лотки — Вольтерра и другие модели «хищник-жертва».
 
+
Модель ФитцХью — Нагумо.
===Работа с ipynb-файлами===
+
Осциллятор Ван дер Поля.
Мы выкладываем материалы курса в виде ipynb-файлов. По ссылкам ниже вы можете просмотреть эти файлы. Если вы хотите открыть этот файл у себя, то вам необходимо скачать его (нажав на иконку в правом верхнем углу страницы с лекцией) и положить в каталог, из которого Jupyter открывает ноутбуки: например, воспользовавшись кнопкой Upload в самом Jupyter (на экране со списком файлов). Также этот каталог можно найти по строчке <code>Serving notebooks from local directory: /home/user/IPython</code>, появляющейся в чёрненьком окошке при запуске Jupyter; здесь <code>/home/user/IPython</code> — искомый путь.
+
Аттрактор Лоренца.
 
+
Модель Рамсея.
==Материалы==
+
Вы можете предложить другую модель, не представленную в списке, но лучше это заранее обсудить с лектором.
===Занятие 1: Первое знакомство===
 
* Первое знакомство: [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%201.ipynb конспект], [http://www.youtube.com/watch?v=5Y5tKPKhurA видео].
 
** Дополнение: PT [http://pythontutor.ru/lessons/inout_and_arithmetic_operations/ арифметические операции], [http://pythontutor.ru/lessons/int_and_float/ целые и вещественные числа].
 
 
 
===Занятие 2: Списки и цикл <code>for</code>===
 
* Списки: [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%202.ipynb конспект], [https://www.youtube.com/watch?v=kBu3g-ITjY4 видео].
 
 
 
* <code>.split</code> и <code>.join</code>, алгоритмы с циклами: [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%203.ipynb#Лекция-№3:-Ввод-вывод-списков-и-проверка-условий конспект] (до раздела «Проверка условий»), [http://www.youtube.com/watch?v=uzgaCV8KZA0 видео]
 
** Дополнение: PT [http://pythontutor.ru/lessons/lists/ списки].
 
 
 
* [http://nbviewer.jupyter.org/url/python.math-hse.info/static/assignments_release/nes-datascience2019/ps01/ps01.ipynb ДЗ№1]
 
 
 
===Занятие 3: Ввод-вывод списков, проверка условий, цикл <code>while</code>===
 
* Ввод-вывод списков, проверка условий, цикл <code>while</code>: [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%203.ipynb конспект], [http://www.youtube.com/watch?v=uzgaCV8KZA0 видео]
 
** Дополнение: PT [http://pythontutor.ru/lessons/lists/#section_2 split и join], [http://pythontutor.ru/lessons/ifelse/ if], [http://pythontutor.ru/lessons/while/ while]
 
 
 
* [https://nbviewer.jupyter.org/url/python.math-hse.info/static/assignments_release/nes-datascience2019/ps02/ps02.ipynb ДЗ№2]
 
 
 
===Занятие 4: Функции===
 
* Функции: [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%204.ipynb конспект], [https://www.youtube.com/watch?v=NYrYSFyCg4w видео].
 
** Дополнение: PT [http://pythontutor.ru/lessons/functions/ функции].
 
 
 
* [https://nbviewer.jupyter.org/url/python.math-hse.info/static/assignments_release/nes-datascience2019/ps03/ps03.ipynb ДЗ№3].
 
 
 
===Занятие 5: Списковые включения, <code>zip</code>, двумерные массивы и словари===
 
* Списковые включения (list comprehensions): [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%205.ipynb#%D0%A1%D0%BF%D0%B8%D1%81%D0%BA%D0%BE%D0%B2%D1%8B%D0%B5-%D0%B2%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F-(list-comprehensions) конспект], [https://www.youtube.com/watch?v=z8bu_b5BboI&feature=youtu.be&t=24m59s видео].
 
 
 
* Словари: [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%205.ipynb конспект], [http://www.youtube.com/watch?v=z8bu_b5BboI видео].
 
 
 
* Множества: [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%207.ipynb#%D0%9C%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B0 конспект]
 
** Дополнение: PT [http://pythontutor.ru/lessons/lists/#section_3 списковые включения], [http://pythontutor.ru/lessons/2d_arrays/ двумерные массивы], [http://pythontutor.ru/lessons/dicts/ словари].
 
 
 
===Занятие 6: Сортировка===
 
* Сортировка: [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%206.ipynb#%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0 конспект], [https://www.youtube.com/watch?v=1w0NG-pfcsg&feature=youtu.be&t=9m17s видео].
 
** Дополнение: [https://docs.python.org/3/howto/sorting.html Sorting howto] (англ.)
 
 
 
* [https://nbviewer.jupyter.org/url/python.math-hse.info/static/assignments_release/nes-datascience2019/ps04/ps04.ipynb ДЗ№4].
 
 
 
===Занятие 7: Работа с файлами===
 
* [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%207.ipynb#%D0%A4%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D1%8B%D0%B9-%D0%B2%D0%B2%D0%BE%D0%B4-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4 конспект].
 
** Дополнение: [https://docs.python.org/3/tutorial/inputoutput.html Официальная документация](англ.)
 
 
 
===Занятие 8: Numpy и картинки===
 
* [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%2011.ipynb конспект], [http://www.youtube.com/watch?v=A84rlgoVnMY видео].
 
 
 
* [https://docs.scipy.org/doc/numpy-dev/user/quickstart.html numpy quickstart], [http://matplotlib.org/users/pyplot_tutorial.html pyplot tutorial], [http://matplotlib.org/gallery.html matplotlib gallery].
 
 
 
* [https://nbviewer.jupyter.org/url/python.math-hse.info/static/assignments_release/nes-datascience2019/ps05/ps05.ipynb ДЗ№5].
 
 
 
===Занятие 9: Введение в Pandas===
 
* pandas и датафреймы: [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%2012.ipynb конспект по базовым возможностям pandas], [http://www.youtube.com/watch?v=ENKfnIEXyKw видео]
 
** Дополнительно: [http://pandas.pydata.org/pandas-docs/stable/10min.html 10-минутное введение (обзор возможностей)], [http://pandas.pydata.org/pandas-docs/stable/tutorials.html#pandas-cookbook pandas-cookbook], [http://pandas.pydata.org/pandas-docs/stable/indexing.html индексация и выбор данных (подробно)]
 
 
 
* [https://nbviewer.jupyter.org/url/python.math-hse.info/static/assignments_release/nes-datascience2019/ps06/ps06.ipynb ДЗ№6]
 
 
 
===Занятие 10: примеры использования pandas===
 
* [http://nbviewer.math-hse.info/url/math-info.hse.ru/f/2018-19/nes-ds/lecture-pandas2.ipynb ipynb-файл с занятия]
 
 
 
===Занятие 11: продвинутые возможности pandas===
 
* [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%2013.ipynb Погода и мультииндексы]
 
 
 
* [http://nbviewer.math-hse.info/url/math-info.hse.ru/f/2018-19/nes-ds/lecture-pandas-pivot-join-weather.ipynb pivot-melt, merge-join] (сырой ipynb с занятия)
 
 
 
===Занятие 12: ещё о pandas===
 
* [https://nbviewer.jupyter.org/url/math-info.hse.ru/f/2018-19/nes-ds/pandas-datareader-pics.ipynb Чтение данных из World Bank, мультииндексы и картинки]
 
 
 
* [http://nbviewer.jupyter.org/url/python.math-hse.info/static/assignments_release/nes-datascience2019/ps07/ps07.ipynb ДЗ№7]
 
 
 
===Занятия 13 и 14: веб-скреппинг===
 
* Извлечение данных из веб-страниц с помощью BeautifulSoup и requests: [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%208.ipynb конспект], [http://www.youtube.com/watch?v=3nPksaHTMGI видео]
 
** Оригинальная документация (англ.): [http://docs.python-requests.org/en/latest/ requests] [http://www.crummy.com/software/BeautifulSoup/bs4/doc/ BeautifulSoup].
 
 
 
* [http://nbviewer.jupyter.org/url/python.math-hse.info/static/assignments_release/nes-datascience2019/ps08/ps08.ipynb ДЗ№8]
 
 
 
===Занятие 15: продвинутый скреппинг: RoboBrowser и Selenium===
 
* Извлечение данных с помощью RoboBrowser: [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%2010.ipynb#Эмуляция-действий-с-браузером конспект],
 
** Оригинальная документация (англ.): [http://robobrowser.readthedocs.org/en/latest/ RoboBrowser]
 
 
 
* Selenium: [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%2010.ipynb#Selenium конспект], [http://selenium-python.readthedocs.org/ неофициальная документация] по Python-Selenium (её проще читать, чем официальную),
 
 
 
* [https://www.youtube.com/watch?v=tC618tbA5Yk&feature=youtu.be&t=11m10s видео].
 
 
 
===Занятие 16: REST API: XML/JSON===
 
* Работа с открытыми API с помощью XML. [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%209.ipynb конспект] [http://www.youtube.com/watch?v=5aelkl2HAow видео].
 
** Документация по API MediaWiki (движка Википедии): [https://www.mediawiki.org/wiki/API:Main_page основная на английском], [https://www.mediawiki.org/wiki/API:Main_page/ru на русском], [https://en.wikipedia.org/w/api.php автогенерированная на английском], [https://ru.wikipedia.org/w/api.php на русском].
 
 
 
* JSON и API. [http://nbviewer.math-hse.info/github/ischurov/pythonhse/blob/master/Lecture%2010.ipynb конспект], [http://www.youtube.com/watch?v=tC618tbA5Yk видео]
 
** [https://ischurov.github.io/jupyter-json.html Интерактивное исследование JSON в Jupyter]
 
 
 
* [https://nbviewer.jupyter.org/url/python.math-hse.info/static/assignments_release/nes-datascience2019/ps09/ps09.ipynb ДЗ №9]
 
 
 
===Занятие 17: немного о математике и визуализациях===
 
* SymPy & Plotly [http://math-info.hse.ru/f/2018-19/nes-ds/sympy-and-plotly.html сырой конспект с занятия] ([http://math-info.hse.ru/f/2018-19/nes-ds/sympy-and-plotly.ipynb исходник])
 
 
 
* [https://docs.sympy.org/latest/index.html SymPy] (символьные вычисления в Python): официальная документация
 
 
 
* [https://plot.ly/python/ plot.ly] (для Python)
 
 
 
===Занятие 18: ещё немного о математике о визуализациях===
 
* scipy (функции для решения математических задач) & plotly.express (быстрая визуализация данных в plot.ly) [https://nbviewer.jupyter.org/url/math-info.hse.ru/f/2018-19/nes-ds/optimize-and-plotly-express.ipynb сырой конспект с занятия]
 
 
 
* [https://scipy-lectures.org scipy-lectures]: тьюториалы по scipy.
 
 
 
* [https://nbviewer.jupyter.org/github/plotly/plotly_express/blob/master/walkthrough.ipynb plotly.express]: примеры использования.
 
 
 
==Часть 2==
 
===Занятие 19: введение в R===
 
* [https://cloud.r-project.org скачать R] [https://www.rstudio.com/products/rstudio/download/ скачать RStudio] (Desktop, Open Source License), [https://rstudio.cloud rstudio.cloud] (можно ничего не скачивать).
 
 
 
* [https://swcarpentry.github.io/r-novice-inflammation/13-supp-data-structures/ структуры данных],  [https://www.datamentor.io/r-programming/data-frame/ dataframe], [https://swcarpentry.github.io/r-novice-inflammation/15-supp-loops-in-depth/index.html циклы] [https://swcarpentry.github.io/r-novice-inflammation/02-func-R/index.html функции], [http://github.com/rstudio/cheatsheets/raw/master/base-r.pdf шпаргалка по базовому R].
 
 
 
* Что было на занятии: [http://math-info.hse.ru/f/2018-19/nes-ds/rhistory.txt история команд], [http://math-info.hse.ru/f/2018-19/nes-ds/notebook.nb.html R Notebook]
 
 
 
===Занятие 20: tidyverse===
 
* Установка tidyverse: <code>install.packages("tidyverse")</code>. Возможно, вам придётся установить переменную окружения [https://code.adonline.id.au/changing-the-default-library-folder-path-in-r/ R_LIB_USER], чтобы она указывала на какой-нибудь каталог, в который вы имеете право записывать файлы (туда будут устанавливаться библиотеки).
 
 
 
* [https://cran.r-project.org/web/packages/dplyr/vignettes/dplyr.html введение в dplyr].
 
 
 
* [https://r4ds.had.co.nz/tidy-data.html tidyr] (заблокировано в РФ): <code>gather</code> и <code>spread</code>.
 
 
 
* [https://datacarpentry.org/dc_zurich/R-ecology/04-dplyr группировка и агрегирование].
 
 
 
===Занятие 21: ggplot2===
 
* Что было на занятиях: [http://math-info.hse.ru/f/2018-19/nes-ds/r-ggplot2.html R Notebook].
 
 
 
* [https://r4ds.had.co.nz/data-visualisation.html введение в ggplot2] (заблокировано в РФ), [https://www.r-graph-gallery.com галерея визуализаций в R], [http://www.ggplot2-exts.org/gallery/ галерея дополнений к ggplot2].
 
 
 
===Занятие 22: регулярные выражения===
 
* [https://habr.com/ru/post/349860/ Подробный текст про регулярки]
 
 
 
* [https://regex101.com regex101] — визуальный отладчик регулярных выражений.
 
 
 
===Занятия 23-25: SQL===
 
* конспекты занятий: [https://nbviewer.jupyter.org/url/math-info.hse.ru/f/2018-19/nes-ds/sql.ipynb раз], [https://nbviewer.jupyter.org/url/math-info.hse.ru/f/2018-19/nes-ds/sql2.ipynb два], [https://nbviewer.jupyter.org/url/math-info.hse.ru/f/2018-19/nes-ds/sql3.ipynb три].
 
 
 
* [https://www.w3schools.com/sql/ SQL Tutorial] (W3Schools) — я в основном следовал этому тьюториалу.
 
 
 
* [https://blog.jooq.org/2016/03/17/10-easy-steps-to-a-complete-understanding-of-sql/ Полезная статья] для понимания SQL.
 
 
 
* Библиотека [https://docs.python.org/3/library/sqlite3.html sqlite3] в Python.
 
 
 
* [http://www.sqlitetutorial.net SQLite Tutorial]
 
 
 
* [https://nbviewer.jupyter.org/url/python.math-hse.info/static/assignments_release/nes-datascience2019/ps11/ps11.ipynb ДЗ№11]
 
 
 
===Занятие 26: объектно-ориентированное программирование===
 
* [https://nbviewer.jupyter.org/url/math-info.hse.ru/f/2018-19/nes-ds/oop.ipynb конспект занятия]
 
 
 
===Занятие 27: SQLAlchemy===
 
* [https://nbviewer.jupyter.org/url/math-info.hse.ru/f/2018-19/nes-ds/sqlalchemy.ipynb конспект занятия]
 
 
 
===Занятие 28: элементы обработки естественного языка===
 
* [https://nbviewer.jupyter.org/url/math-info.hse.ru/f/2018-19/nes-ds/nlp.ipynb конспект занятия]
 
 
 
==Проекты==
 
===Весенний проект===
 
* [[/Весенний проект]] (срок сдачи: 15 апреля, 23:00)
 
 
 
Примеры хороших работ:
 
 
 
* [https://nbviewer.jupyter.org/url/math-info.hse.ru/f/2018-19/nes-ds/spring-projects/anna-schetkina.ipynb PhD Guide Project], автор Анна Щёткина.
 
* [https://nbviewer.jupyter.org/url/math-info.hse.ru/f/2018-19/nes-ds/spring-projects/anna-sevostyanova.ipynb IMDB Project], автор Анна Севостьянова.
 
* [https://nbviewer.jupyter.org/url/math-info.hse.ru/f/2018-19/nes-ds/spring-projects/daniil-bushuev/project%20v1.2.ipynb Проект Даниила Бушуева] (несколько разных тем).
 
* [http://math-info.hse.ru/f/2018-19/nes-ds/spring-projects/anastasia-sochenko.zip Проект-визуализация данных о космических объектах], автор Анастасия Соченко.
 
* [http://math-info.hse.ru/f/2018-19/nes-ds/spring-projects/igor-karpov.zip Статистика по всеросу], автор Игорь Карпов.
 
* [http://math-info.hse.ru/f/2018-19/nes-ds/spring-projects/andrej-pershkhajlo.zip Оценка качестве пешеходной инфраструктуры], автор Андрей Першхайло.
 
 
 
===Летний проект===
 
* [[/Летний проект]] (срок сдачи: 12 июня, 23:00)
 
 
 
==Данные==
 
* [http://math-info.hse.ru/f/2018-19/spb-python/movie_metadata.csv imdb-5000] (источник: [https://www.kaggle.com/carolzhangdc/imdb-5000-movie-dataset https://www.kaggle.com/carolzhangdc/imdb-5000-movie-dataset])
 
 
 
* [http://math-info.hse.ru/f/2018-19/nes-ds/gradebook.sqlite gradebook.sqlite]
 

Версия 20:33, 20 ноября 2021

    1. Общее описание

Вам необходимо подготовить интерактивную демонстрацию для какого-либо известного дифференциального уравнения или системы, задаваемой дифференциальными уравнениями. Она должна быть выполнена в виде веб-страницы, для просмотра которой не нужно устанавливать никаких дополнительных приложений (то есть пользоваться можно только HTML/JavaScript).

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

На странице должно быть представлено описание системы, её физичесий / механический / биологический / etc. смысл, математические свойства решений (если известны) — всё, что делает эту систему интересной. Предполагается, что вы изучите литературу, посвященную выбранной системе, и сделаете на её основе научно-популярную статью с интерактивными иллюстрациями. Можно представлять себе энциклопедическую статью или главу из учебника, но использующую возможности современных технологий. Весь текст должен быть написан самостоятельно, но при этом опираться на качественные источники, которые должны быть явно указаны.

У читателя должна быть возможность задавать параметры системы (начальные условия, другие параметры) и видеть, как система от них зависит. Например, выбрать начальные условия и построить траекторию или анимацию, показывающую динамику системы; или выбрать дополнительные параметры и увидеть, как меняется фазовый портрет. По формату хочется что-то вроде статьи на http://distill.pub, только про дифференциальные уравнения.

На любом этапе работы вы можете советоваться с лектором по поводу проекта.

    1. Примеры систем

Двойной маятник (double pendulum). Задача двух тел. Задача трёх (или n, n>2) тел. Модель Лотки — Вольтерра и другие модели «хищник-жертва». Модель ФитцХью — Нагумо. Осциллятор Ван дер Поля. Аттрактор Лоренца. Модель Рамсея. Вы можете предложить другую модель, не представленную в списке, но лучше это заранее обсудить с лектором.