Машинное обучение и глубокое обучение с Libra

машинное обучение глубокое обучение компьютерное зрение NLP

Автор|Али Арьян Компилировать|ВКонтакте Источник | К науке о данных

С появлением машинного обучения мы стали свидетелями появления многих замечательных фреймворков и библиотек, таких как scikitlearn, Tensorflow, Pytorch. Эти платформы упрощают пользователям создание моделей машинного обучения. Но все же необходимо следить за всем процессом, включая подготовку данных, моделирование, оценку.

Подготовка данных включает очистку данных и предварительную обработку. Моделирование берет предварительно обработанные данные и использует алгоритмы для прогнозирования результатов. Оценка обеспечивает меру производительности нашего алгоритма. Благодаря этим библиотекам и фреймворкам мы тратим меньше времени на написание всего, но нам все равно нужно написать небольшой объем кода.

«Машинный интеллект — последнее изобретение, которое должны создать люди», — Ник Бостром.

Достижения в этой области растут день ото дня благодаря удивительному сообществу открытого исходного кода, которое породило существующие фреймворки. Рассмотрим фреймворк, который делает все вышеперечисленное в одной строке.

Да, вы правильно прочитали, теперь вы тоже можете. Libra — это фреймворк, который работает для вас сразу. Он прост в использовании даже для нетехнических людей. Весам требуется наименьшее среднее количество строк кода для обучения модели.

В этом блоге я дам полное руководство по использованию Libra. Я возьму разные наборы данных для разных задач и покажу вам пошаговый метод.

Обнаружение мошенничества с кредитными картами с помощью Libra

Я использовал набор данных Kaggle для прогнозирования мошенничества с кредитными картами. Данные были подвергнуты анализу основных компонентов, поэтому теперь они уменьшены до данных меньшего размера по сравнению с исходными данными.

При решении этого вопроса необходимо придерживаться системного подхода. Как правило, вы будете следовать порядку, указанному в первом абзаце. Но с Весами вам не о чем беспокоиться.

Ссылка на набор данных:вооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооО

Большинство транзакций в этих данных не были мошенническими по времени (99,83%), в то время как мошеннические транзакции имели место в наборе данных (0,17%). Это означает, что данные сильно несбалансированы. Давайте посмотрим на предварительную обработку данных Libra и результаты.

Установить весы

pip install -U libra

Импорт клиента из весов (клиент)

from libra import client

Использование Весов

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

Мы передаем расположение файла в клиентский объект и называем его newClient. Теперь, чтобы получить доступ к различным запросам, см. документацию.

Я использую дерево решений. Например, прогнозирование средней стоимости дома или оценка количества домохозяйств. В противном случае код должен соответствовать столбцу в наборе данных. Libra автоматически определяет целевой столбец, но чтобы убедиться, что выбран правильный столбец, я передал имя целевого столбца.

newClient = client('creditcard.csv')

newClient.decision_tree_query('Class')

Написав всего две строки кода, мы получили оценку около 0,99 — лучшее, что мы могли получить. Если вы проверите успех других людей, вы увидите, что лишь несколько человек получили точность 0,99 и потратили часы на предварительную обработку данных и написание кода для них.

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

Вам не нужно беспокоиться об анализе результатов

newClient.analyze() создает матрицы путаницы и кривые ROC для всех задач классификации. Он также рассчитывает отзыв, точность, баллы f1 и f2.

newClient.analyze()

newClient.info() возвращает все ключи, представляющие каждую категорию данных, созданную для набора данных.

newClient.info()

newClient.model() возвращает словарь этой модели. Он включает в себя все, от точности, точности, отзыва, оценки F1 до всех методов предварительной обработки. Это будет более полезно для тех, кто уже понимает эти концепции и умеет писать код. Нетехническим пользователям не нужно беспокоиться об этом.

newClient.model()

модель доступа

newClient.model() возвращает словарь, если вы хотите получить доступ к модели, вы можете напрямую использовать newClient.model()['model']

newClient.model()['model']

Сверточная нейронная сеть на базе Libra

Используйте приведенный ниже код, чтобы загрузить набор данных «камень-ножницы-бумага» в блокноте colab. Я мог бы сразу показать вам код для создания CNN с использованием Libra, но я хотел создать пример, который вы можете попробовать сами в блокноте colab для лучшего понимания. Вам не нужно беспокоиться о приведенном ниже коде.

!wget --no-check-certificate \

https://storage.googleapis.com/laurencemoroney-blog.appspot.com/rps.zip \

-O /tmp/rps.zip

!wget --no-check-certificate \

https://storage.googleapis.com/laurencemoroney-blog.appspot.com/rps-test-set.zip \

-O /tmp/rps-test-set.zip

Извлеките загруженный файл, используя приведенный ниже код.

import os

import zipfile

local_zip = '/tmp/rps.zip'

zip_ref = zipfile.ZipFile(local_zip, 'r')

zip_ref.extractall('/tmp/')

zip_ref.close()

local_zip = '/tmp/rps-test-set.zip'

zip_ref = zipfile.ZipFile(local_zip, 'r')

zip_ref.extractall('/tmp/')

zip_ref.close()

Мы создаем папку с кодом ниже и помещаем в нее извлеченные изображения.

rock_dir = os.path.join('/tmp/rps/rock')

paper_dir = os.path.join('/tmp/rps/paper')

scissors_dir = os.path.join('/tmp/rps/scissors')

print('total training rock images:', len(os.listdir(rock_dir)))

print('total training paper images:', len(os.listdir(paper_dir)))

print('total training scissors images:', len(os.listdir(scissors_dir)))

rock_files = os.listdir(rock_dir)

print(rock_files[:10])

paper_files = os.listdir(paper_dir)

print(paper_files[:10])

scissors_files = os.listdir(scissors_dir)

print(scissors_files[:10])

На изображении ниже показана информация о наборе данных.

Используя приведенный ниже код, вы можете создать CNN. Данные будут автоматически увеличены путем масштабирования, вырезания, отражения и изменения масштаба. Затем выберите лучший размер изображения. Вы также заметите количество изображений в каждом классе и количество классов, связанных с ним. Наконец, также обратите внимание на точность обучения и точность теста.

Вы также можете передать гиперпараметр read_mode внутри convolutional_query, где вы можете указать режим чтения. Допускаются три режима чтения. Я опишу их один за другим. По умолчанию **read_mode=distinguisher()** автоматически определяет тип данных. Допустимы три режима чтения:

1.Setwise

Каталог состоит из папок «training_set» и «testing_set», обе из которых содержат папки классификации с изображениями.

2.Classwise

Каталог состоит из категоризированных папок, содержащих изображения.

3.CSV Wise

Каталог состоит из папки изображений и файла CSV, содержащего столбцы изображений.

newClient = client('/tmp/rps')

newClient.convolutional_query("Please classify my images")

Классификация текстов NLP на основе Libra

Я использую набор данных классификации спама для решения этой проблемы.

Ссылка на сайт:Woohoo.Карта реформирована.com/team-love/afraid…

new_client = client('SPAM text message 20170820 - Data.csv')

new_client.text_classification_query('sentiment')

new_client.classify_text('new text to classify')

new_client.classify_text() будет классифицировать введенный в него текст. В приведенном выше выводе вы можете видеть, что он классифицирует мой текст как «ветчина».

Средняя кластеризация с Libra

Я использую данные сегментации клиентов торгового центра, чтобы решить эту проблему:Woohoo.Карта реформед.com/VJ легко накачать DHA…

Libra создаст модель кластеризации K-средних и определит лучшие центры кластеров, оптимизирует точность и наилучшее количество кластеров.

Классификация нейронных сетей на основе Libra

В этом разделе я буду использовать запрос нейронной сети для классификации. Для этого я использовал частный набор данных, чтобы предсказать поведение сигналов мозга. Давайте проверим, как он работает с этим набором данных.

new_client = client('Mood_classification.csv')

new_client.neural_network_query('Predict the behavior')

Из приведенного выше кода вы можете заметить, что начальное количество слоев, используемых моделью, равно 3. Затем он также проверяет точность различных слоев, которые различаются в зависимости от производительности предыдущего слоя.

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

Вы можете получить доступ к модели с помощью new_client.model()['model'] и использовать функцию сводки () Keras, чтобы получить сводку модели нейронной сети.

new_client.model()['model'].summary()

в заключении

Libra — очень интересный фреймворк, который совершенствуется с каждым днем. Эта структура дает нам представление о скорости, с которой растет область науки о данных, а также позволяет нам увидеть типы изменений, которые возможны в этой области. Они также добавили функциональные возможности для существующих специалистов по данным, чтобы модифицировать существующие нейронные сети и добавлять слои, подобные LSTM, по указанным индексам. Я в восторге от концепций, которые предлагает эта структура.

использованная литература:

[1] Libra, Documentation(2020), libradocs.github.io/

Оригинальная ссылка:к data science.com/machine-ahhh…

Добро пожаловать на сайт блога Panchuang AI:panchuang.net/

sklearn машинное обучение китайские официальные документы:sklearn123.com/

Добро пожаловать на станцию ​​сводки ресурсов блога Panchuang:docs.panchuang.net/