Глава 14. Машинное обучение: классификация, регрессия
и кластеризация....................................................................................611
14.1. Введение в машинное обучение........................................................................612
14.1.1. Scikit-learn...............................................................................................613
14.1.2. Типы машинного обучения.....................................................................615
14.1.3. Наборы данных, включенные в поставку scikit-learn..........................618
14.1.4. Последовательность действий в типичном исследовании
data science..............................................................................................619
14.2. Практический пример: классификация методом k ближайших
соседей и набор данных Digits, часть 1.............................................................620
14.2.1. Алгоритм k ближайших соседей............................................................622
14.2.2. Загрузка набора данных.........................................................................623
14.2.3. Визуализация данных.............................................................................627
14.2.4. Разбиение данных для обучения и тестирования................................629
14.2.5. Создание модели.....................................................................................631
14.2.6. Обучение модели.....................................................................................631
14.2.7. Прогнозирование классов для рукописных цифр................................632
14.3. Практический пример: классификация методом k ближайших
соседей и набор данных Digits, часть 2.............................................................634
14.3.1. Метрики точности модели......................................................................634
14.3.2. K-проходная перекрестная проверка....................................................639
14.3.3. Выполнение нескольких моделей для поиска наилучшей..................641
14.3.4. Настройка гиперпараметров..................................................................643
14.4. Практический пример: временные ряды и простая
линейная регрессия............................................................................................644
14.5. Практический пример: множественная линейная регрессия
с набором данных California Housing.................................................................651
14.5.1. Загрузка набора данных.........................................................................651
14.5.2. Исследование данных средствами Pandas...........................................654
14.5.3. Визуализация признаков........................................................................656
14.5.4. Разбиение данных для обучения и тестирования................................661
14.5.5. Обучение модели.....................................................................................661
14.5.6. Тестирование модели..............................................................................663
14.5.7. Визуализация ожидаемых и прогнозируемых цен...............................664
14.5.8. Метрики регрессионной модели............................................................665
14.5.9. Выбор лучшей модели......................................................................................666
18 Оглавление
14.6. Практический пример: машинное обучение без учителя,
часть 1 — понижение размерности....................................................................667
14.7. Практический пример: машинное обучение без учителя,
часть 2 — кластеризация методом k средних...................................................672
14.7.1. Загрузка набора данных Iris...................................................................674
14.7.2. Исследование набора данных Iris: описательная статистика
в Pandas....................................................................................................676
14.7.3. Визуализация набора данных функцией pairplot.................................678
14.7.4. Использование оценщика KMeans.........................................................682
14.7.5. Понижение размерности методом анализа главных компонент.........684
14.7.6. Выбор оптимального оценщика для кластеризации............................687
14.8. Итоги.....................................................................................................................690
Глава 15. Глубокое обучение.................................................................................692
15.1. Введение..............................................................................................................693
15.1.1. Практическое применение глубокого обучения....................................696
15.1.2. Демонстрационные приложения глубокого обучения..........................696
15.1.3. Ресурсы Keras..........................................................................................697
15.2. Встроенные наборы данных Keras.....................................................................697
15.3. Нестандартные среды Anaconda........................................................................699
15.4. Нейронные сети...................................................................................................701
15.5. Тензоры.................................................................................................................704
15.6. Сверточные нейронные сети для распознавания образов; множественная классификация с набором данных MNIST..............................706
15.6.1. Загрузка набора данных MNIST..............................................................709
15.6.2. Исследование данных.............................................................................709
15.6.3. Подготовка данных..................................................................................712
15.6.4. Создание нейронной сети.......................................................................715
15.6.5. Обучение и оценка модели......................................................................726
15.6.6. Сохранение и загрузка модели...............................................................733
15.7. Визуализация процесса обучения нейронной сети в TensorBoard.................734
15.8. ConvnetJS: глубокое обучение и визуализация в браузере.............................738
15.9. Рекуррентные нейронные сети для последовательностей; анализ эмоциональной окраски с набором данных IMDb................................740
15.9.1. Загрузка набора данных IMDb................................................................741
15.9.2. Исследование данных.............................................................................742
Оглавление 19
15.9.3. Подготовка данных.................................................................................746
15.9.4. Создание нейронной сети.....................................................................747
15.9.5. Обучение и оценка модели....................................................................750
15.10. Настройка моделей глубокого обучения..........................................................752
15.11. Модели сверточных нейронных сетей с предварительным
обучением на ImageNet.....................................................................................753
15.12. Итоги...................................................................................................................755
Глава 16. Большие данные: Hadoop, Spark, NoSQL и IoT...................................758
16.1. Введение..............................................................................................................759
16.2. Реляционные базы данных и язык структурированных запросов (SQL)..........765
16.2.1. База данных books...................................................................................767
16.2.2. Запросы SELECT......................................................................................773
16.2.3. Секция WHERE.........................................................................................773
16.2.4. Условие ORDER BY...................................................................................774
16.2.5. Слияние данных из нескольких таблиц: INNER JOIN...........................776
16.2.6. Команда INSERT INTO..............................................................................777
16.2.7. Команда UPDATE......................................................................................778
16.2.8. Команда DELETE FROM ..........................................................................780
16.3. Базы данных NoSQL и NewSQL: краткое введение..........................................781
16.3.1. Базы данных NoSQL «ключ-значение».................................................782
16.3.2. Документные базы данных NoSQL.........................................................782
16.3.3. Столбцовые базы данных NoSQL...........................................................783
16.3.4. Графовые базы данных NoSQL...............................................................784
16.3.5. Базы данных NewSQL..............................................................................785
16.4. Практический пример: документная база данных MongoDB...........................786
16.4.1. Создание кластера MongoDB Atlas.........................................................787
16.4.2. Потоковая передача твитов в MongoDB.................................................789
16.5. Hadoop..................................................................................................................801
16.5.1. Обзор Hadoop...........................................................................................801
16.5.2. Получение статистики по длине слов в «Ромео и Джульетте» с использованием MapReduce................................................................805
16.5.3. Создание кластера Apache Hadoop в Microsoft Azure HDInsight..........805
16.5.4. Hadoop Streaming.....................................................................................808
16.5.5. Реализация сценария отображения.......................................................809
16.5.6. Реализация сценария свертки...............................................................810
20 Оглавление
16.5.7. Подготовка к запуску примера MapReduce............................................811
16.5.8. Выполнение задания MapReduce...........................................................812
16.6. Spark.....................................................................................................................816
16.6.1. Краткий обзор Spark................................................................................816
16.6.2. Docker и стеки Jupyter Docker................................................................818
16.6.3. Подсчет слов с использованием Spark..................................................823
16.6.4. Подсчет слов средствами Spark в Microsoft Azure................................827
16.7. Spark Streaming: подсчет хештегов Twitter с использованием
стека Docker pyspark-notebook..........................................................................831
16.7.1. Потоковая передача твитов в сокет........................................................832
16.7.2. Получение сводки хештегов и Spark SQL..............................................836
16.8. «Интернет вещей»...............................................................................................844
16.8.1. Публикация и подписка...........................................................................846
16.8.2. Визуализация живого потока PubNub средствами Freeboard.............846
16.8.3. Моделирование термостата, подключенного к интернету,
в коде Python............................................................................................849
16.8.4. Создание информационной панели с Freeboard.io...............................853
16.8.5. Создание подписчика PubNub в коде Python........................................854
16.9. Итоги.....................................................................................................................860
От издательства
Некоторые иллюстрации для лучшего восприятия нужно смотреть в цветном варианте. Мы снабдили их QR-кодами, перейдя по которым, вы можете ознакомиться с цветной версией рисунка.
Ваши замечания, предложения, вопросы отправляйте по адресу comp@piter.com (издательство «Питер», компьютерная редакция). Мы будем рады узнать ваше мнение!
На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.
В память о Марвине Мински, отце-основателе искусственного интеллекта.
Мне выпала честь учиться у вас на двух учебных курсах по искусственному интеллекту в Массачусетском технологическом институте.
Вы вдохновляли ваших студентов мыслить, выходя за рамки традиционных представлений.
Харви Дейтел
Предисловие
«Там золото в этих холмах!»1
Перед вами книга «Python: Искусственный интеллект, большие данные и облачные вычисления». В ней вы займетесь практическим освоением самых интересных, самых революционных вычислительных технологий, а также программированием на Python — одном из самых популярных языков программирования в мире, лидирующем по темпам развития.
Python обычно сразу приходится по нраву разработчикам. Они ценят Python за выразительность, удобочитаемость, компактность и интерактивную природу. Разработчикам нравится мир разработки с открытым кодом, который порождает стремительно растущую базу программного обеспечения для невероятно широкого спектра прикладных областей.
Уже много десятилетий в мире действуют определенные тенденции. Компьютерное оборудование становится быстрее, дешевле и компактнее. Скорость доступа к интернету растет и дешевеет. Качественное программное обеспечение становится более массовым и практически бесплатным (или почти бесплатным) благодаря движению «открытого кода». Вскоре «интернет вещей» объединит десятки миллиардов устройств любых видов, которые только можно представить. Они порождают колоссальные количества данных на быстро растущих скоростях и объемах.
1 Источник неизвестен, часто ошибочно приписывается Марку Твену.
Спрос на квалификацию в области data science 23
В современных вычислениях большинство последних новшеств связано с данными — data science, аналитика данных, большие данные, реляционные базы данных (SQL), базы данных NoSQL и NewSQL… Все эти темы будут рассматриваться в книге в сочетании с инновационным подходом к программированию на Python.
Спрос на квалификацию в области data science
В 2011 году Глобальный институт McKinsey опубликовал отчет «Большие данные: новый рубеж для инноваций, конкуренции и производительности». В отчете было сказано: «Только Соединенные Штаты сталкиваются с нехваткой от 140 тысяч до 190 тысяч специалистов, обладающих глубокими аналитическими познаниями, а также 1,5 миллиона менеджеров и аналитиков, которые бы анализировали большие данные и принимали решения на основании полученных результатов»1. Такое положение дел сохраняется. В отчете за август 2018 года «LinkedIn Workforce Report» сказано, что в Соединенных Штатах существует нехватка более 150 тысяч специалистов в области data science2. В отчете IBM, Burning Glass Technologies и Business-Higher Education Forum за 2017 года говорится, что к 2020 году в Соединенных Штатах будут существовать сотни тысяч вакансий, требующих квалификации в области data science3.
Модульная структура
Модульная структура книги обеспечивает потребности разных профессиональных аудиторий.
Главы 1–10 посвящены программированию на языке Python. Каждая из этих глав содержит краткий раздел «Введение в data science»; в этих разделах будут представлены такие темы, как искусственный интеллект, основные характеристики описательной статистики, метрики, характеризующие положение центра распределения и разброс, моделирование, статические и динамические визуализации, работа с файлами CSV, применение Pandas для исследования и первичной обработки данных, временные ряды и простая линейная регрес1
https://www.mckinsey.com/~/media/McKinsey/Business%20Functions/McKinsey%20Digital/Our%20Insights/Big%20data%20The%20next%20frontier%20for%20innovation/MGI_big_data_full_report.ashx (с. 3).
2 https://economicgraph.linkedin.com/resources/linkedin-workforce-report-august-2018.
3 https://www.burning-glass.com/wp-content/uploads/The_Quant_Crunch.pdf (с. 3).
24 Предисловие
сия. Эти разделы подготовят вас к изучению data science, искусственного интеллекта, больших данных и облачных технологий в главах 11–16, в которых вам представится возможность применить реальные наборы данных в полноценных практических примерах.
После описания Python в главах 1–5 и некоторых ключевых частей глав 6–7 вашей подготовки будет достаточно для основных частей практических примеров в главах 11–16. Раздел «Зависимость между главами» данного предисловия поможет преподавателям спланировать свои профессиональные курсы в контексте уникальной архитектуры книги.
Главы 11–16 переполнены занимательными, современными примерами. В них представлены практические реализации по таким темам, как обработка естественного языка, глубокий анализ данных Twitter, когнитивные вычисления на базе IBM Watson, машинное обучение с учителем для решения задач классификации и регрессии, машинное обучение без учителя для решения задач кластеризации, глубокое обучение на базе сверточных нейронных сетей, глубокое обучение на базе рекуррентных нейронных сетей, большие данные с Hadoop, Spark и баз данных NoSQL, «интернет вещей» и многое другое. Попутно вы освоите широкий спектр терминов и концепций data science, от кратких определений до применения концепций в малых, средних и больших программах. Подробное оглавление книги даст вам представление о широте изложения.
Ключевые особенности
ØØ
Простота: в каждом аспекте книги мы ставили на первое место простоту и ясность. Например, для обработки естественного языка мы используем простую и интуитивную библиотеку TextBlob вместо более сложной библиотеки NLTK. При описании глубокого обучения мы отдали предпочтение Keras перед TensorFlow. Как правило, если для решения какой-либо задачи можно было воспользоваться несколькими разными библиотеками, мы выбирали самый простой вариант.
ØØ
Компактность: большинство из 538 примеров этой книги невелики — они состоят всего из нескольких строк кода с немедленным интерактивным откликом от IPython. Также в книгу включены 40 больших сценариев и подробных практических примеров.
ØØ
Актуальность: мы прочитали множество книг о программировании Python и data science; просмотрели или прочитали около 15 000 статей, исследовательских работ, информационных документов, видеороликов, публикаций в блогах, сообщений на форумах и документов. Это позвоСпрос
на квалификацию в области data science 25
лило нам «держать руку на пульсе» сообществ Python, компьютерных технологий, data science, AI, больших данных и облачных технологий.
Быстрый отклик: исследования и эксперименты с IPython
ØØ
Если вы хотите учиться по этой книге, лучше всего читать текст и параллельно выполнять примеры кода. В этой книге используется интерпретатор IPython, который предоставляет удобный интерактивный режим с немедленным откликом для быстрых исследований и экспериментов с Python и обширным набором библиотек.
ØØ
Большая часть кода представлена в виде небольших интерактивных сеансов IPython. IPython немедленно читает каждый фрагмент кода, написанный вами, обрабатывает его и выводит результаты. Мгновенная обратная связь помогает сосредоточиться, повышает эффективность обучения, способствует быстрой прототипизации и ускоряет процесс разработки.
ØØ
В наших книгах на первый план всегда выходит живой код и ориентация на полноценные работоспособные программы с реальным вводом и выводом. «Волшебство» IPython как раз и заключается в том, что он превращает фрагменты в код, который «оживает» с каждой введенной строкой. Такой результат повышает эффективность обучения и поощряет эксперименты.
Основы программирования на Python
ØØ
Прежде всего в книге достаточно глубоко и подробно излагаются основы Python.
ØØ
В ней рассматриваются модели программирования на языке Python — процедурное программирование, программирование в функциональном стиле и объектно-ориентированное программирование.
ØØ
Мы стараемся наглядно выделять текущие идиомы.
ØØ
Программирование в функциональном стиле используется везде, где это уместно. На диаграмме в главе 4 перечислены ключевые средства программирования в функциональном стиле языка Python с указанием глав, в которых они впервые рассматриваются.
538 примеров кода
ØØ
Увлекательное, хотя и непростое введение в Python подкрепляется 538 реальными примерами — от небольших фрагментов до основательных прак26
Предисловие
тических примеров из области компьютерной теории, data science, искусственного интеллекта и больших данных.
ØØ
Мы займемся нетривиальными задачами из области искусственного интеллекта, больших данных и облачных технологий, такими как обработка естественного языка, глубокий анализ данных Twitter, машинное обучение, глубокое обучение, Hadoop, MapReduce, Spark, IBM Watson, ключевые библиотеки data science (NumPy, pandas, SciPy, NLTK, TextBlob, spaCy, Textatistic, Tweepy, Scikit-learn, Keras), ключевые библиотеки визуализации (Matplotlib, Seaborn, Folium) и т. д.
Объяснения вместо математических выкладок
ØØ
Мы стараемся сформулировать концептуальную сущность математических вычислений и использовать ее в своих примерах. Для этого применяются такие библиотеки, как statistics, NumPy, SciPy, pandas и многие другие, скрывающие математические сложности от пользователя. Таким образом, вы сможете пользоваться такими математическими методами, как линейная регрессия, даже не владея математической теорией, на которой они базируются. В примерах машинного обучения мы стараемся создавать объекты, которые выполнят все вычисления за вас.
Визуализации
ØØ
67 статических, динамических, анимированных и интерактивных визуализаций (диаграмм, графиков, иллюстраций, анимаций и т. д.) помогут вам лучше понять концепции.
ØØ
Вместо того чтобы подолгу объяснять низкоуровневое графическое программирование, мы сосредоточимся на высокоуровневых визуализациях, построенных средствами Matplotlib, Seaborn, pandas и Folium (для интерактивных карт).
ØØ
Визуализации используются как учебный инструмент. Например, закон больших чисел наглядно демонстрируется динамической моделью бросков кубиков и построением гистограммы. С увеличением количества бросков процент выпадений каждой грани постепенно приближается к 16,667% (1/6), а размеры столбцов, представляющих эти проценты, постепенно выравниваются.
ØØ
Визуализации чрезвычайно важны при работе с большими данными: они упрощают исследование данных и получение воспроизводимых результаСпрос
на квалификацию в области data science 27
тов исследований, когда количество элементов данных может достигать миллионов, миллиардов и более. Часто говорят, что одна картинка стоит тысячи слов1 — в мире больших данных визуализация может стоить миллиардов, триллионов и даже более записей в базе данных. Визуализации позволяют взглянуть на данные «с высоты птичьего полета», увидеть их «в перспективе» и составить о них представление. Описательные статистики полезны, но иногда могут увести в ошибочном направлении. Например, квартет Энскомба2 демонстрирует посредством визуализаций, что серьезно различающиеся наборы данных могут иметь почти одинаковые показатели описательной статистики.
ØØ
Мы приводим код визуализаций и анимаций, чтобы вы могли реализовать собственные решения. Также анимации предоставляются в виде файлов с исходным кодом и документов Jupyter Notebook, чтобы вам было удобно настраивать код и параметры анимаций, заново выполнить анимации и понаблюдать за эффектом изменений.
Опыт работы с данными
ØØ
В разделах «Введение в data science» и практических примерах из глав 11–16 вы получите полезный опыт работы с данными.
ØØ
Мы будем работать со многими реальными базами данных и источниками данных. В интернете существует огромное количество бесплатных открытых наборов данных, с которыми вы можете экспериментировать. На некоторых сайтах, упомянутых нами, приводятся ссылки на сотни и тысячи наборов данных.
ØØ
Многие библиотеки, которыми вы будете пользоваться, включают популярные наборы данных для экспериментов.
ØØ
В книге мы рассмотрим действия, необходимые для получения данных и подготовки их к анализу, анализ этих данных различными средствами, настройки моделей и эффективных средств передачи результатов, особенно посредством визуализации.
GitHub
ØØ
GitHub — превосходный ресурс для поиска открытого кода, который вы сможете интегрировать в свои проекты (а также поделиться своим кодом
1 https://en.wikipedia.org/wiki/A_picture_is_worth_a_thousand_words.
2 https://ru.wikipedia.org/wiki/Квартет_Энскомба.
28 Предисловие
с сообществом). Также GitHub является важнейшим элементом арсенала разработчика с функциональностью контроля версий, которая помогает командам разработчиков управлять проектами с открытым (и закрытым) кодом.
ØØ
Мы будем использовать множество разнообразных библиотек Python и data science, распространяемых с открытым кодом, а также программных продуктов и облачных сервисов — бесплатных, имеющих пробный период и условно-бесплатных. Многие библиотеки размещаются на GitHub.
Практические облачные вычисления
ØØ
Большая часть аналитики больших данных выполняется в облачных средах, позволяющих легко динамически масштабировать объем аппаратных и программных ресурсов, необходимых вашему приложению. Мы будем работать с различными облачными сервисами (напрямую или опосредованно), включая Twitter, Google Translate, IBM Watson, Microsoft Azure, OpenMapQuest, geopy, Dweet.io и PubNub.
ØØ
Мы рекомендуем пользоваться бесплатными, имеющими пробный период или условно-бесплатными сервисами. Предпочтение отдается тем сервисам, которые не требуют ввода данных кредитной карты, чтобы избежать получения больших счетов. Если же вы решили использовать сервис, требующий ввода данных кредитной карты, убедитесь в том, что с выбранного вами бесплатного уровня не происходит автоматический переход на платный уровень.
Базы данных, большие данные и инфраструктура больших данных
ØØ
По данным IBM (ноябрь 2016 года), 90% мировых данных было создано за последние два года1. Факты показывают, что скорость создания данных стремительно растет.
ØØ
По данным статьи AnalyticsWeek за март 2016 года, в течение 5 лет к интернету будет подключено более 50 миллиардов устройств, а к 2020 году в мире будет ежесекундно производиться 1,7 мегабайт новых данных на каждого человека2!
1 https://public.dhe.ibm.com/common/ssi/ecm/wr/en/wrl12345usen/watson-customer-engagement-watson-marketing-wr-other-papers-and-reports-wrl12345usen-20170719.pdf.
2 https://analyticsweek.com/content/big-data-facts/.
Спрос на квалификацию в области data science 29
ØØ
В книге рассматриваются основы работы с реляционными базами данных и использования SQL с SQLite.
ØØ
Базы данных — критический элемент инфраструктуры больших данных для хранения и обработки больших объемов информации. Реляционные базы данных предназначены для обработки структурированных данных — они не приспособлены для неструктурированных и полуструктурированных данных в приложениях больших данных. По этой причине с развитием больших данных были созданы базы данных NoSQL и NewSQL для эффективной работы с такими данными. Мы приводим обзор NoSQL и NewSQL, а также практический пример работы с документной базой данных MongoDB в формате JSON. MongoDB — самая популярная база данных NoSQL.
ØØ
Оборудование и программная инфраструктура больших данных рассматриваются в главе 16.
Практические примеры из области искусственного интеллекта
ØØ
В практических примерах глав 11–15 представлены темы искусственного интеллекта, включая обработку естественного языка, глубокий анализ данных Twitter для анализа эмоциональной окраски, когнитивные вычисления на базе IBM Watson, машинное обучение с учителем, машинное обучение без учителя и глубокое обучение. В главе 16 представлено оборудование больших данных и программная инфраструктура, которые позволяют специалистам по компьютерным технологиям и теоретикам data science реализовать ультрасовременные решения на базе искусственного интеллекта.
Встроенные коллекции: списки, кортежи, множества, словари
ØØ
Как правило, в наши дни самостоятельная реализация структур данных не имеет особого смысла. В книге приведено подробное, состоящее из двух глав описание встроенных структур данных Python — списков, кортежей, словарей и множеств, успешно решающих большинство задач структурирования данных.
Программирование с использованием массивов NumPy и коллекций pandas Series/DataFrame
ØØ
Мы также уделили особое внимание трем ключевым структурам данных из библиотек с открытым кодом: массивам NumPy, коллекциям pandas Series и pandas DataFrame. Эти коллекции находят широкое применение
30 Предисловие
в data science, компьютерной теории, искусственном интеллекте и больших данных. NumPy обеспечивает эффективность на два порядка выше, чем у встроенных списков Python.
ØØ
В главу 7 включено подробное описание массивов NumPy. Многие библиотеки, например pandas, построены на базе NumPy. В разделах «Введение в data science» в главах 7–9 представлены коллекции pandas Series и DataFrame, которые хорошо работают в сочетании с массивами NumPy, а также используются в оставшихся главах.
Работа с файлами и сериализация
ØØ
В главе 9 рассказывается об обработке текстовых файлов, а затем показано, как сериализовать объекты в популярном формате JSON (JavaScript Object Notation). JSON часто используется в части, посвященной data science.
ØØ
Многие библиотеки data science предоставляют встроенные средства для работы с файлами и загрузки наборов данных в программы Python. Кроме простых текстовых файлов, мы также займемся обработкой файлов в популярном формате CSV (значения, разделенные запятыми) с использованием модуля csv стандартной библиотеки Python и средств библиотеки data science pandas.
Объектно-базированное программирование
ØØ
Мы стараемся использовать многочисленные классы, упакованные сообществом разработки с открытым кодом Python в библиотеки классов. Прежде всего мы разберемся в том, какие библиотеки существуют, как выбрать библиотеки, подходящие для ваших приложений, как создать объекты существующих классов (обычно в одной-двух строках кода) и пустить их в дело. Объектно-базированный стиль программирования позволяет быстро и компактно строить впечатляющие приложения, что является одной из важных причин популярности Python.
ØØ
Этот подход позволит вам применять машинное обучение, глубокое обучение и другие технологии искусственного интеллекта для быстрого решения широкого спектра интересных задач, включая такие задачи когнитивных вычислений, как распознавание речи и «компьютерное зрение».
Объектно-ориентированное программирование
ØØ
Разработка собственных классов — важнейшая составляющая объектно-ориентированного программирования наряду с наследованием, полиморСпрос
на квалификацию в области data science 31
физмом и утиной типизацией. Эти составляющие рассматриваются в главе 10.
ØØ
В главе 10 рассматривается модульное тестирование с использованием doctest и интересного моделирования процесса тасования и раздачи карт.
ØØ
Для целей глав 11–16 хватает нескольких простых определений пользовательских классов. Вероятно, в коде Python вы будете применять объектно-базированное программирование чаще, чем полноценное объектно-ориентированное программирование.
Воспроизводимость результатов
ØØ
В науке вообще и в data science в частности существует потребность в воспроизведении результатов экспериментов и исследований, а также эффективном распространении этих результатов. Для этого обычно рекомендуется применять документы Jupyter Notebook.
ØØ
Воспроизводимость результатов рассматривается в книге в контексте методов программирования и программных средств, таких как документы Jupyter Notebook и Docker.
Эффективность
ØØ
В нескольких примерах используется средство профилирования %timeit для сравнения эффективности разных подходов к решению одной задачи. Также рассматриваются такие средства, относящиеся к эффективности, как выражения-генераторы, сравнение массивов NumPy со списками Python, эффективность моделей машинного обучения и глубокого обучения, эффективность распределенных вычислений Hadoop и Spark.
Большие данные и параллелизм
В этой книге вместо написания собственного кода параллелизации мы поручим таким библиотекам, как Keras на базе TensorFlow, и таким инструментам больших данных, как Hadoop и Spark, провести параллелизацию за вас. В эру больших данных/искусственного интеллекта колоссальные требования к вычислительным мощностям приложений, работающих с большими массивами данных, заставляют нас задействовать полноценный параллелизм, обеспечиваемый многоядерными процессорами, графическими процессорами (GPU), тензорными процессорами (TPU) и гигантскими компьютерными кластерами в облаке. Некоторые задачи больших данных могли требовать параллельной работы тысяч процессоров для быстрого анализа огромных объемов данных.
32 Предисловие
Зависимость между главами
Допустим, вы — преподаватель, составляющий план лекций для профессиональных учебных курсов, или разработчик, решающий, какие главы следует читать в первую очередь. Тогда этот раздел поможет вам принять оптимальные решения. Главы лучше всего читать (или использовать для обучения) по порядку. Тем не менее для большей части материала разделов «Введение в data science» в конце глав 1–10 и практических примеров в главах 11–16 необходимы только главы 1–5 и небольшие части глав 6–10.