Машинное обучение – это подполе искусственного интеллекта (AI). Цель машинного обучения состоит в анализе структур данных и создании на их основе моделей, которые могут понимать и использовать люди.
Машинное обучение является полем в области информатики, однако оно отличается от традиционных вычислительных подходов. В традиционных вычислениях алгоритмы представляют собой наборы явно запрограммированных инструкций, используемых компьютерами для выполнения расчетов или решения проблемы. А алгоритмы машинного обучения позволяют компьютерам обучаться на входных данных и использовать статистический анализ для вывода значений, которые попадают в определенный диапазон. Благодаря этому компьютеры становятся более производительными в построении моделей из выборочных данных, что позволяет автоматизировать процессы принятия решений на основе заданной информации.
Машинное обучение положительно влияет на все современные технологии.
Благодаря технологии распознавания лиц платформы социальных сетей помогают пользователям размещать свои фото и делиться фотографиями друзей. Технология оптического распознавания символов (OCR) преобразует изображения текста в подвижной шрифт. Рекомендательные сервисы, основанные на машинном обучении, подсказывают, какие фильмы или телевизионные шоу могут понравиться пользователю в зависимости от его предпочтений. Беспилотные автомобили, которые используют машинное обучение в навигации, скоро могут стать доступными для широкого круга потребителей.
Делаю нейросеть с нуля
Машинное обучение постоянно развивается. Потому при работе с методами машинного обучения или прианализе влияния его процессов следует учитывать некоторые нюансы.
В этой статье мы рассмотрим общие методы машинного обучения – с учителем и без учителя – а также познакомимся с основными алгоритмическими подходами к обучению (метод k-ближайшего соседа, дерево принятия решений и глубокое обучение). Вы узнаете, какие языки программирования наиболее часто используются в машинном обучении, и каковы их преимущества и недостатки.
Методы машинного обучения
В машинном обучении задачи обычно подразделяются на широкие категории. Эти категории основаны на том, как проходит обучение или как разработанная система получает обратную связь.
Два наиболее широко используемых метода машинного обучения:
- обучение с учителем, где задействованы алгоритмы, основанные на примерах входных и выходных данных, которые маркированы людьми,
- и обучение без учителя, где используются алгоритмы без маркированных данных, что позволяет машинам самостоятельно находить структуру внутри своих входных данных.
Рассмотрим эти методы более подробно.
Машинное обучение с учителем
При обучении с учителем компьютер получает образцы входных данных с отмеченными желаемыми результатами. Цель этого метода состоит в том, чтобы алгоритм мог «учиться» путем сравнения своего вывода с заранее отмеченными результатами и соответствующим образом корректировать модель. Таким образом, этот метод обучения использует шаблоны для прогнозирования значений дополнительных немаркированных данных.
#1. Этапы трансляции программы в машинный код. Стандарты | Язык C для начинающих
К примеру, в машинном обучении с учителем алгоритм может получить набор изображений рыб, маркированных как fish, и набор изображений водоемов, маркированных как water. Изучая эти данные, позже алгоритм должен суметь распознать немаркированные изображения рыб и как fish и немаркированные изображения водоемов как water.
Как правило, машинное обучение с учителем используется для прогнозирования статистически вероятных будущих событий на основе исторических данных. Такие алгоритмы могут использовать историческую информацию о фондовом рынке для прогнозирования предстоящих колебаний или фильтровать спам. При обучении с учителем маркированные фотографии собак могут использоваться в качестве входных данных для классификации немаркированных изображений собак.
Машинное обучение без учителя
При обучении без учителя алгоритм получает немаркированные данные, поэтому ему нужно самостоятельно найти схожесть в его входных данных. Немаркированных данных обычно гораздо больше, чем маркированных, потому особенно полезными сегодня являются методы машинного обучения, которые облегчают обучение без учителя.
Цель обучения без учителя – обнаружение в наборе данных явных и скрытых шаблонов и черт, что позволяет вычислительной машине автоматически обнаруживать схожесть, необходимую для классификации необработанных данных.
Обучение без учителя обычно используется для транзакционных данных. К примеру, у вас может быть большой набор данных о клиентах и их покупках, но как человек вы, вероятно, не сможете обнаружить схожие атрибуты в профилях клиентов и их типах покупок. На основе полученных данных алгоритм обучения без учителя может выяснить, что женщины определенного возрастного диапазона, покупающие мыло без запаха, вероятно, беременны, и потому эта аудитория может стать целевой для маркетинговой кампании, связанной с беременностью и детскими продуктами, что увеличит количество заказов.
Алгоритм, который не знает «правильных» ответов, может анализировать и организовывать более широкие и несвязанные наборы данных. Обучение без учителя часто используется для обнаружения аномалий (в том числе выявления для мошенничества с кредитными картами) и создания систем рекомендаций, которые советуют пользователю, какие продукты купить/ какой фильм посмотреть и т.п. на основе его предпочтений. При обучении без учителя немаркированные изображения собак могут использоваться в качестве входных данных для алгоритма поиска сходств и классификации всех фотографий собак.
Подходы в машинном обучении
Машинное обучение тесно связано с вычислительной статистикой, поэтому наличие базовых знаний в статистике полезно для понимания и использования алгоритмов машинного обучения.
Для исследования взаимосвязи между количественными переменными обычно используются понятия корреляции и регрессии.
Корреляция – это мера сходства между двумя переменными, которые не являются ни зависимыми, ни независимыми. Регрессия на базовом уровне используется для изучения взаимосвязи между одной зависимой и одной независимой переменной. Регрессионная статистика может прогнозировать зависимую переменную, если известна независимая переменная, а потому регрессия позволяет использовать возможности прогнозирования.
Подходы к компьютерному обучению постоянно развиваются. Рассмотрим несколько популярных подходов, которые используются в машинном обучении на сегодняшний день.
Метод k-ближайшего соседа
Метод k-ближайшего соседа (сокращенно k-N) – это модель распознавания шаблонов, которая может использоваться как для классификации, так и для регрессии. Здесь k является положительным целым числом (обычно небольшим). В любой классификации или регрессии вход будет состоять из k-ближайших примеров обучения в пространстве.
Сосредоточимся на методах для классификации объектов в k-NN. Вывод этого метода относит объект к одному из доступных классов. Это присвоит новый объект классу, наиболее часто используемому среди его ближайших соседей. Если k = 1, объект присваивается классу ближайшего соседа.
Для примера представьте, что у нас есть два класса объектов: красные ромбы и синие треугольники.
Если в пространстве появляется новый объект – к примеру, зеленый круг, – алгоритм должен отнести его к определенному классу.
При k = 3 алгоритм находит трех ближайших соседей зеленого круга и классифицирует их. Предположим, тремя ближайшими соседями круга оказались один ромб и два треугольника. В таком случае круг будет отнесен к классу треугольников.
Среди наиболее простых алгоритмов машинного обучения метод k-ближайшего соседа считается «ленивым обучением», поскольку обобщение за пределами данных обучения не происходит до тех пор, пока в системе не появится запрос.
Деревья принятия решений
Обычно деревья решений используются для визуального представления процесса принятия решений. При работе с машинным обучением и добыче данных деревья решений используются как предсказательная модель. Эти модели сопоставляют сведения о данных с выводами о целевом значении данных.
Цель дерева решений – создать модель, которая будет прогнозировать целевое значение на основе входных переменных.
В предсказательной модели атрибуты данных, которые определяются посредством наблюдения, представлены ветвями, а выводы о целевом значении данных представлены в виде листьев.
При изучении дерева исходные данные делятся на подмножества на основе проверки значения атрибута, которая повторяется на каждом из полученных подмножеств рекурсивно. Как только значение подмножества в узле станет эквивалентно его целевому значению, процесс рекурсии будет завершен.
При работе с деревьями принятия решений необходимо определить отдельные аспекты: какие функции выбирать, какие условия использовать для разделения и как понять, когда дерево принятия решений достигло целевого значения.
Глубокое обучение
Глубокое обучение (или глубинное обучение) пытается подражать тому, как человеческий мозг может обрабатывать световые и звуковые стимулы в зрение и слух. Архитектура глубокого обучения вдохновлена биологическими нейронными сетями и состоит из нескольких слоев в искусственной нейронной сети, которая включает в себя ряд аппаратных средств и графических процессоров.
Глубокое обучение использует каскад нелинейных модулей обработки, чтобы извлекать или преобразовывать функции (или представления) данных. Выход одного слоя служит входом следующего слоя. При глубоком обучении с учителем алгоритмы могут служить для классификации данных, а без учителя – для анализа шаблонов.
Среди алгоритмов машинного обучения, которые используются и разрабатываются в настоящее время, глубокое обучение поглощает больше всего данных и может превзойти человека в решении некоторых когнитивных задач. Потому глубокое обучение используется в области искусственного интеллекта.
Подходы глубокого обучения оказали существенное влияние на развитие компьютерного зрения и распознавания речи. Хорошим примером системы, которая использует глубокое обучение, является IBM Watson.
Языки программирования и машинное обучение
При выборе языка программирования для машинного обучения нужно учитывать доступные функции и библиотеки.
Сегодня можно предположить, что наиболее востребованным языком программирования в профессиональной области машинного обучения является Python. Затем идет Java, затем R и C ++.
Популярность Python может быть вызвана интенсивной разработкой систем глубокого обучения: TensorFlow, PyTorch и Keras. Будучи языком с удобочитаемым синтаксисом, который можно использовать в качестве языка сценариев, Python одинаково производителен как в предварительной обработке данных, так и в работе с данными напрямую. Библиотека машинного обучения scikit-learn построена на основе нескольких других пакетов Python, популярных среди разработчиков: NumPy, SciPy и Matplotlib.
- Создание машинно-обучаемого классификатора с помощью Scikit-learn в Python
- Стилизация изображения с помощью нейросети, Python3 и PyTorch
- Другие руководства по Python 3
Java обычно используется корпорациями и сторонними разработчиками настольных приложений, которые работают над корпоративным машинным обучением. Обычно Java не рассматривается как вариант для программистов-новичков, которые хотят научиться машинному обучению; этот язык предпочитают те, у кого есть опыт разработки Java, достаточный для применения в машинном обучении. Что касается приложений машинного обучения в промышленности, обычно Java чаще, чем Python, используется в сетевой безопасности, в том числе для предотвращения кибератак и обнаружения мошенничества.
Среди библиотек машинного обучения для Java:
- Deeplearning4j, распределенная библиотека с открытым исходным кодом для глубокого обучения, написанная для Java и Scala.
- MALLET (MAchine Learning for LanguagE Toolkit), набор инструментов для машинного обучения по текстам, который включает поддержку обработки естественного языка, моделирования тем, классификации документов и кластеризации.
- Weka, набор алгоритмов машинного обучения для обработки интеллектуального анализа данных.
R – язык программирования с открытым исходным кодом, используемый в основном для статистических вычислений. За последние годы он стал популярным и пользуется большим успехом у ученых. R обычно не используется в промышленных производственных средах, но его популярность в промышленных приложениях растет из-за повышенного интереса к науке о данных. Популярные пакеты для машинного обучения в R:
- caret (сокращение от Classification And REgression Training), библиотека для создания прогностических моделей.
- randomForest, пакет для классификации и регрессии.
- e1071, пакет, предоставляющий функции статистики и теории вероятностей.
Язык C++ обычно используется для машинного обучения и искусственного интеллекта в игровых или роботизированных приложениях (в том числе для передвижения роботов). Разработчики встроенных вычислительных аппаратов и инженеры-электроники предпочитают использовать C++ или C в приложениях для машинного обучения благодаря их гибкости и предлагаемому уровню контроля. Популярными библиотеками машинного обучения C++ являются масштабируемый пакет mlpack, Dlib с широким набором алгоритмов машинного обучения и модульная библиотека с открытым исходным кодом Shark.
Человеческий фактор в машинном обучении
Хотя анализ данных и вычислительный анализ могут заставить нас думать, что мы получаем объективную информацию, это не так; результаты машинного обучения не всегда являются нейтральными. Смещение результатов, вносимое человеческим фактором, влияет не только на сбор и систематизацию данных, но и на сами алгоритмы, которые определяют, как машинное обучение будет взаимодействовать с этими данными.
Предположим, есть группа людей, которая собирает и маркирует изображения для машинного обучения. Она получает задачу собрать изображения цветов. Если большинство людей выберет для этого изображение розы, компьютер не сможет классифицировать как цветок лилию, подсолнух или фиалку.
Еще один пример. В качестве учебных данных в машинном обучении использовались фотографии ученых. Компьютер получил набор изображений, где в подавляющем большинстве были представлены белые мужчины. В результате машина не смогла должным образом классифицировать людей с другим цветом кожи и женщин. Недавние исследования показали, что программы искусственного интеллекта и машинного обучения получили по наследству расовые и гендерные предрассудки.
Сегодня машинное обучение все больше задействовано в бизнесе, и не выявленные вовремя предубеждения могут стать причиной системных проблем: на основе предрассудков программы могут помешать человеку получить кредит, найти объявление о высокооплачиваемой работе или даже заказать доставку в тот же день.
В машинном обучении человеческий фактор может негативно повлиять на других людей, и сейчас чрезвычайно важно осознавать это и стремиться к его устранению. Для этого в разработке, тестировании и анализе проектов машинного обучения должны быть задействованы различные люди.
Некоторые разработчики обращаются с просьбой о мониторинге и аудите алгоритмов к регулирующим третьим сторонам. Другие создают альтернативные системы, которые могут выявлять в алгоритмах этические предубеждения. Бороться с предрассудками в области машинного обучения очень важно. Для этого нужно постоянно повышать осведомленность о них, помнить о наших собственных неосознанных предубеждениях и учитывать их при сборе и структурировании данных.
Заключение
В этой статье мы рассмотрели некоторые примеры использования машинного обучения, распространенные методы и популярные подходы в этой области, языки программирования для машинного обучения, а также влияние человеческого фактора на объективность результатов.
Машинное обучение постоянно развивается, потому важно иметь в виду, что алгоритмы, методы и подходы будут изменяться со временем.
- Искусственный интеллект: общие положения
- Как подготовить сервер к машинному обучению
- Визуализация временных рядов в Python 3
- Прогнозирование временных рядов с помощью Prophet в Python 3
Источник: www.8host.com
Пишем первую программу по машинному обучению до 50 строк с помощью Scikit-Learn
Если вдруг кому интересно то я веду телеграм канал где выкладываю интересные статьи на темы DS или ML которые могут быть вам интересны.
Сегодня мы воспользуемся возможностями машинного обучения для анализа шоколадного печенья.
Машинное обучение сегодня стало довольно будничным явлением. Кажется, что эту технологию невозможно понять и применить без глубоких познаний в информатике и математике, но это утверждение далеко от правды. В мире, где ведущие компании были созданы в гаражах, а FOSS (бесплатное и открытое программное обеспечение) есть везде, куда ни глянь, существует несколько библиотек, созданных сообществом, чтобы упростить разработку модели машинного обучения.
Что такое Scikit-Learn?
Scikit-learn — это библиотека машинного обучения для Python. Она построена поверх нескольких библиотек Python, включая NumPy (математические функции), SciPy (нужно больше математики!) и Matplotlib (визуализация данных).
Если вы хоть немного знакомы со сферой машин лёрнинга, вы можете удивиться, почему мы не используем TensorFlow от Google. TensorFlow — это тоже библиотека машинного обучения, но она в основном фокусируется на глубоком обучении и нейронных сетях. Scikit-learn содержит только общие концепции машинного обучения и считается более легким для новичков по сравнению с TensorFlow.
Такие компании, как JPMorgan и Spotify применяют scikit-learn для задач предиктивного анализа или системы рекомендации музыки. Отзывы можно посмотреть здесь.
С чего начать
Для этого туториала вам понадобятся:
- Python (версия 3.7 или выше) — в комплекте желательно иметь базовый опыт работы с ним
Сначала установите три пакета с помощью pip в консоли:
pip install notebook pip install numpy pip install scikit-learn
Запустите в консоли jupyter notebook. Ваш дефолтный браузер должен открыть вкладку с проводником файлов. Просто переходите по директории, где вы бы хотели создать программу и создайте там файл Python 3 Notebook (выберите new в правом верхнем углу). Вы увидите такой экран:
Можете переименовать файл, кликнув на «Untitled.»
Время кодить!
Запустите каждую ячейку после завершения ее записи, нажав кнопку Run вверху экрана. В первой ячейке начните с импорта нужных библиотек:
from sklearn.neural_network import MLPClassifier import numpy as np
Теперь время для данных, на которых мы будем обучать нашу модель. Допустим, мы отправимся в магазин печенья и опросим людей о том, какое печенье они пробовали:
# sweet, bitter, good(1) or bad(0) survey = np.array([ [1, 0, 1], [1, 0, 1], [0, 1, 0], [1, 0, 1], [1, 0, 1], [0, 1, 0], [1, 0, 1], [0, 1, 0], ])
Посмотрите на эти данные (обратите внимание на комментарий вверху). Мы быстро определили закономерность: сладкое печенье = хорошо, а горькое = плохо. Этому простому выводу мы и обучим нашу модель.
Теперь мы определяем характеристики и метки наших данных:
features_train = survey[:, 0:2] labels_train = survey[:, 2]
Этот пункт говорит сам за себя — характеристики, по которым мы обучаем модель, это сладость или горечь печенья, а метка — оценка печенья: хорошее оно или нет.
Далее нажмите alt + enter, чтобы создать новую ячейку.
Теперь нам нужно разработать тестовый набор, чтобы проверить нашу модель на данных, которые она просмотрела. Это поможет понять, насколько модель точная.
Нейронные сети
В качестве модели мы будем использовать MLPClassifier от scikit-learn. MLP просто (или не очень просто) означает многослойный перцептрон. В общих чертах, многослойный перцептрон — это искусственная нейросеть с обратной связью, где входы и выходы равны 0 или 1:
Нейросети так называются не случайно — узлы (или нейроны) в нейронных сетях аналогичны нейронам в мозге человека. Если правильно стимулировать нейроны, они запускаются.
Скрытые слои — это то место, где происходит волшебство. Их называют скрытыми, потому что они не видны за пределами сети.
Каждый нейрон скрытого слоя имеет вес, отражающий степень важности его входных данных. Например, если бы мы добавили к нашим данным больше факторов, чем просто «сладкий» или «горький», модель применила бы веса к каждому из этих признаков. И соленость, и сладость помогают получить хорошее печенье, но вес солености может быть меньше (т.е. 0,2х), чем вес сладости (т.е. 0,5х).
Так получится, если модель придет к выводу, что сладость для хорошего печенья важнее, чем соленость.
Каждый нейрон также имеет bias — смещение (постоянное число), которое добавляется или вычитается, чтобы компенсировать результат работы нейрона. Слишком сложно для этого туториала, поэтому опустим подробности.
Нейронная сеть, которую мы создаем, это не сеть глубокого обучения. Глубокой нейронной сетью считается сеть, в которой более трех скрытых слоев (3 — общепринятое число). Таким сетям не требуются маркированные данные. Например, классическая нейронная сеть требует участия человека для маркировки наборов данных. Мы так делали, когда маркировали, какие печенья были хорошими, а какие нет — это и называется контролируемым обучением.
С другой стороны, глубокие нейронные сети выполняют так называемое «обучение без учителя». Они могут использовать не маркированные данные и объединять их в различные группы на основе характеристик, которые они определяют самостоятельно.
И наконец, сам код (знаю, звучит не так впечатляюще). Мы просто определяем, что наш скрытый слой будет состоять из 5 слоев, и что мы будем просматривать наши данные 3000 раз.
# Define the model mlp = MLPClassifier(hidden_layer_sizes=(5), max_iter=3000, # epochs )
Снова нажмите alt + enter, чтобы создать новую ячейку.
Теперь мы подгоним или обучим модель к данным, которые мы ей предоставили. Модель пройдет через данные 3000 раз (то есть, завершит 3000 эпох), как мы и определили при создании нашей сети.
Затем мы протестируем нашу модель на тренировочном и тестовом множестве с разработанными весами и смещениями.
# Train the model mlp.fit(features_train, labels_train) print(f»Training set score: «) print(f»Testing set score: n»)
Training set score: 100.000% Testing set score: 100.000%
Еще раз нажмите alt + enter, чтобы создать новую ячейку.
Наконец, мы можем использовать нашу проверенную модель, чтобы определить, будет ли печенье хорошим или нет. Вот код, который я использовал для тестирования:
features_list=[ , ] for item in features_list: print(f»Type: «) if mlp.predict(item[«features»]) == 1: print(«Good cookie!») else: print(«Bad cookie!») print(«n»)
Помните вывод, который мы сделали на основе полученных данных в самом начале? Наша модель успешно сошлась с нами в мышлении!
Type: Sweet cookie Good cookie! Type: Bitter cookie Bad cookie!
Вывод
Конечно, данные, которые мы использовали в этой модели, не нуждаются в нейронной сети. Но это простая имплементация с простыми данными, и с ней мы можем сфокусироваться на том, как работает машинное обучение.
Вы можете обновлять опросник про печенье и добавлять тестовые наборы на свой вкус. Добавьте, например, больше признаков (хрусткость, соленость и т.д.), и испытайте модель самостоятельно.
Спасибо за чтение! Надеюсь, вам понравился туториал, и вы лучше поняли, как работает машинное обучение.
Источник: habr.com
Руководство. Создание приложений машинного обучения с помощью Машинного обучения Synapse
В этой статье показано, как использовать Машинное обучение Synapse (SynapseML) для создания приложений машинного обучения. SynapseML расширяет решение распределенного машинного обучения Apache Spark путем добавления различных средств глубокого обучения, а также обработки и анализа данных, таких как Azure Cognitive Services, OpenCV, LightGBM и др. SynapseML позволяет создавать мощные и масштабируемые прогнозные и аналитические модели на основе разных источников данных Spark. Synapse Spark предоставляет встроенные библиотеки SynapseML, в том числе:
- Vowpal Wabbit — службы библиотек для машинного обучения, которые позволяют использовать возможности Анализа текста, например анализ тональности в твитах.
- Cognitive Services в Spark — объединение функций Azure Cognitive Services в конвейерах SparkML, позволяющее получить проект решения для таких служб моделирования данных, как обнаружение аномалий.
- LightGBM — платформа градиентного усиления, которая использует три базовых алгоритма обучения. Она предназначена для распределения и повышения эффективности.
- Условные модели KNN — масштабируемые модели KNN с условными запросами.
- HTTP в Spark — оркестрация распределенных микрослужб при интеграции Spark и специальных возможностей на основе протокола HTTP.
В этом руководстве рассматриваются примеры использования Azure Cognitive Services в SynapseML для следующих решений:
- Анализ текста — получение сведений о тональности (или настроении) набора предложений;
- Компьютерное зрение — получение тегов (описание с использованием одного слова), связанных с набором изображений;
- Поиск изображений Bing — поиск в Интернете изображений, соответствующих запросу на естественном языке;
- Детектор аномалий — обнаружение аномалий в данных временных рядов.
Предварительные требования
- Рабочая область Azure Synapse Analytics с учетной записью хранения Azure Data Lake Storage 2-го поколения, настроенной в качестве хранилища по умолчанию. При работе с файловой системой Data Lake Storage 2-го поколения вам нужно иметь права участника для получения данных Хранилища BLOB-объектов.
- Пул Spark в рабочей области Azure Synapse Analytics. Дополнительные сведения см. в статье Создание пула Spark в Azure Synapse.
- Предварительные действия описаны в руководстве по настройке Cognitive Services в Azure Synapse.
Начало работы
Чтобы начать работу, импортируйте SynapseML и настройте ключи служб.
import synapse.ml from synapse.ml.cognitive import * from notebookutils import mssparkutils # A general Cognitive Services key for Text Analytics and Computer Vision (or use separate keys that belong to each service) cognitive_service_key = mssparkutils.credentials.getSecret(«ADD_YOUR_KEY_VAULT_NAME», «ADD_YOUR_SERVICE_KEY»,»ADD_YOUR_KEY_VAULT_LINKED_SERVICE_NAME») # A Bing Search v7 subscription key bingsearch_service_key = mssparkutils.credentials.getSecret(«ADD_YOUR_KEY_VAULT_NAME», «ADD_YOUR_BING_SEARCH_KEY»,»ADD_YOUR_KEY_VAULT_LINKED_SERVICE_NAME») # An Anomaly Dectector subscription key anomalydetector_key = mssparkutils.credentials.getSecret(«ADD_YOUR_KEY_VAULT_NAME», «ADD_YOUR_ANOMALY_KEY»,»ADD_YOUR_KEY_VAULT_LINKED_SERVICE_NAME»)
Пример для Анализа текста
Служба Анализ текста предоставляет несколько алгоритмов для извлечения интеллектуальной аналитики из текста. Например, можно определить тональность заданного входного текста. Служба вернет оценку между 0,0 и 1,0: низкий показатель указывает на отрицательную тональность, а высокий — на положительную. В этом примере используются три простых предложения. Для каждого из них возвращается тональность.
from pyspark.sql.functions import col # Create a dataframe that’s tied to it’s column names df_sentences = spark.createDataFrame([ («I am so happy today, its sunny!», «en-US»), («this is a dog», «en-US»), («I am frustrated by this rush hour traffic!», «en-US») ], [«text», «language»]) # Run the Text Analytics service with options sentiment = (TextSentiment() .setTextCol(«text») .setLocation(«eastasia») # Set the location of your cognitive service .setSubscriptionKey(cognitive_service_key) .setOutputCol(«sentiment») .setErrorCol(«error») .setLanguageCol(«language»)) # Show the results of your text query in a table format display(sentiment.transform(df_sentences).select(«text», col(«sentiment»)[0].getItem(«sentiment»).alias(«sentiment»)))
Ожидаемые результаты
I am frustrated by this rush hour traffic! (Меня раздражает дорожное движение в час пик!) | негативная тональность |
this is a dog (это собака) | нейтральная тональность |
I am so happy today, its sunny! | позитивная тональность |
Пример для Компьютерного зрения
Служба Компьютерное зрение анализирует изображения для выявления таких структур, как лица, объекты и описания на естественном языке. В этом примере мы добавляем теги к следующему изображению. Теги — это описания вещей, выраженные одним словом, например распознаваемых объектов, людей, пейзажей и действий.
# Create a dataframe with the image URL df_images = spark.createDataFrame([ («https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/ComputerVision/Images/objects.jpg», ) ], [«image», ]) # Run the Computer Vision service. Analyze Image extracts information from/about the images. analysis = (AnalyzeImage() .setLocation(«eastasia») # Set the location of your cognitive service .setSubscriptionKey(cognitive_service_key) .setVisualFeatures([«Categories»,»Color»,»Description»,»Faces»,»Objects»,»Tags»]) .setOutputCol(«analysis_results») .setImageUrlCol(«image») .setErrorCol(«error»)) # Show the results of what you wanted to pull out of the images. display(analysis.transform(df_images).select(«image», «analysis_results.description.tags»))
Ожидаемые результаты
https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/ComputerVision/Images/objects.jpg | [skating, person, man, outdoor, riding, sport, skateboard, young, board, shirt, air, park, boy, side, jumping, ramp, trick, doing, flying] |
Пример для Поиска изображений Bing
Поиск изображений Bing — поиск в Интернете изображений, соответствующих запросу пользователя на естественном языке. В этом примере мы используем текстовый запрос для поиска изображений с кавычками. Он возвращает список URL-адресов изображений, содержащих фотографии, связанные с нашим запросом.
from pyspark.ml import PipelineModel # Number of images Bing will return per query imgsPerBatch = 2 # A list of offsets, used to page into the search results offsets = [(i*imgsPerBatch,) for i in range(10)] # Since web content is our data, we create a dataframe with options on that data: offsets bingParameters = spark.createDataFrame(offsets, [«offset»]) # Run the Bing Image Search service with our text query bingSearch = (BingImageSearch() .setSubscriptionKey(bingsearch_service_key) .setOffsetCol(«offset») .setQuery(«Martin Luther King Jr. quotes») .setCount(imgsPerBatch) .setOutputCol(«images»)) # Transformer that extracts and flattens the richly structured output of Bing Image Search into a simple URL column getUrls = BingImageSearch.getUrlTransformer(«images», «url») pipeline_bingsearch = PipelineModel(stages=[bingSearch, getUrls]) # Show the results of your search: image URLs res_bingsearch = pipeline_bingsearch.transform(bingParameters) display(res_bingsearch.dropDuplicates())
Ожидаемые результаты
http://everydaypowerblog.com/wp-content/uploads/2014/01/Martin-Luther-King-Jr.-Quotes-16.jpg |
http://www.scrolldroll.com/wp-content/uploads/2017/06/6-25.png |
http://abettertodaymedia.com/wp-content/uploads/2017/01/86783bd7a92960aedd058c91a1d10253.jpg |
https://weneedfun.com/wp-content/uploads/2016/05/martin-luther-king-jr-quotes-11.jpg |
http://www.sofreshandsogreen.com/wp-content/uploads/2012/01/martin-luther-king-jr-quote-sofreshandsogreendotcom.jpg |
https://cdn.quotesgram.com/img/72/57/1104209728-martin_luther_king_jr_quotes_16.jpg |
http://comicbookandbeyond.com/wp-content/uploads/2019/05/Martin-Luther-King-Jr.-Quotes.jpg |
https://exposingthepain.files.wordpress.com/2015/01/martin-luther-king-jr-quotes-08.png |
https://topmemes.me/wp-content/uploads/2020/01/Top-10-Martin-Luther-King-jr.-Quotes2-1024×538.jpg |
http://img.picturequotes.com/2/581/580286/dr-martin-luther-king-jr-quote-1-picture-quote-1.jpg |
http://parryz.com/wp-content/uploads/2017/06/Amazing-Martin-Luther-King-Jr-Quotes.jpg |
http://everydaypowerblog.com/wp-content/uploads/2014/01/Martin-Luther-King-Jr.-Quotes1.jpg |
https://lessonslearnedinlife.net/wp-content/uploads/2020/05/Martin-Luther-King-Jr.-Quotes-2020.jpg |
https://quotesblog.net/wp-content/uploads/2015/10/Martin-Luther-King-Jr-Quotes-Wallpaper.jpg |
Пример для Детектора аномалий
Детектор аномалий — удобное средство для обнаружения несоответствующих данных во временных рядах. В этом примере мы используем службу для поиска аномалий во всех временных рядах.
from pyspark.sql.functions import lit # Create a dataframe with the point data that Anomaly Detector requires df_timeseriesdata = spark.createDataFrame([ («1972-01-01T00:00:00Z», 826.0), («1972-02-01T00:00:00Z», 799.0), («1972-03-01T00:00:00Z», 890.0), («1972-04-01T00:00:00Z», 900.0), («1972-05-01T00:00:00Z», 766.0), («1972-06-01T00:00:00Z», 805.0), («1972-07-01T00:00:00Z», 821.0), («1972-08-01T00:00:00Z», 20000.0), # anomaly («1972-09-01T00:00:00Z», 883.0), («1972-10-01T00:00:00Z», 898.0), («1972-11-01T00:00:00Z», 957.0), («1972-12-01T00:00:00Z», 924.0), («1973-01-01T00:00:00Z», 881.0), («1973-02-01T00:00:00Z», 837.0), («1973-03-01T00:00:00Z», 9000.0) # anomaly ], [«timestamp», «value»]).withColumn(«group», lit(«series1»)) # Run the Anomaly Detector service to look for irregular data anamoly_detector = (SimpleDetectAnomalies() .setSubscriptionKey(anomalydetector_key) .setLocation(«eastasia») .setTimestampCol(«timestamp») .setValueCol(«value») .setOutputCol(«anomalies») .setGroupbyCol(«group») .setGranularity(«monthly»)) # Show the full results of the analysis with the anomalies marked as «True» display(anamoly_detector.transform(df_timeseriesdata).select(«timestamp», «value», «anomalies.isAnomaly»))
Ожидаемые результаты
1972-01-01T00:00:00Z | 826.0 | false |
1972-02-01T00:00:00Z | 799.0 | false |
1972-03-01T00:00:00Z | 890.0 | false |
1972-04-01T00:00:00Z | 900.0 | false |
1972-05-01T00:00:00Z | 766.0 | false |
1972-06-01T00:00:00Z | 805.0 | false |
1972-07-01T00:00:00Z | 821.0 | false |
1972-08-01T00:00:00Z | 20000.0 | true |
1972-09-01T00:00:00Z | 883.0 | false |
1972-10-01T00:00:00Z | 898.0 | false |
1972-11-01T00:00:00Z | 957.0 | false |
1972-12-01T00:00:00Z | 924.0 | false |
1973-01-01T00:00:00Z | 881.0 | false |
1973-02-01T00:00:00Z | 837.0 | false |
1973-03-01T00:00:00Z | 9000.0 | true |
Пример преобразования речи в текст
Служба Преобразование речи в текст преобразует потоки или файлы с речью в текст. В этом примере мы выполним транскрибирование одного аудиофайла в текст.
# Create a dataframe with our audio URLs, tied to the column called «url» df = spark.createDataFrame([(«https://mmlspark.blob.core.windows.net/datasets/Speech/audio2.wav»,) ], [«url»]) # Run the Speech-to-text service to translate the audio into text speech_to_text = (SpeechToTextSDK() .setSubscriptionKey(service_key) .setLocation(«northeurope») # Set the location of your cognitive service .setOutputCol(«text») .setAudioDataCol(«url») .setLanguage(«en-US») .setProfanity(«Masked»)) # Show the results of the translation display(speech_to_text.transform(df).select(«url», «text.DisplayText»))
Ожидаемые результаты
https://mmlspark.blob.core.windows.net/datasets/Speech/audio2.wav | Служба «Пользовательское распознавание речи» предоставляет инструменты, позволяющие визуально проверить качество распознавания модели путем сравнения аудиоданных с соответствующим результатом распознавания на портале Пользовательского распознавания речи. You can playback uploaded audio and determine if the provided recognition result is correct. This tool allows you to quickly inspect quality of Microsoft’s baseline speech to text model or a trained custom model without having to transcribe any audio data. |
Очистка ресурсов
Чтобы правильно завершить работу экземпляра Spark, завершите все подключенные сеансы (записные книжки). Пул Apache Spark завершит работу автоматически, когда истечет указанное для него время простоя. Можно также выполнить команду остановки сеанса из строки состояния в верхней правой части записной книжки.
Дальнейшие действия
- Ознакомьтесь с примерами записных книжек Synapse
- Репозиторий SynapseML в GitHub
Источник: learn.microsoft.com