Рубрики
Без рубрики

Нейронные сети с Sklearn MLPRPREGRESSOR

Нейронные сети приобрели огромную популярность в последние годы. Это не только результат улучшенных алгоритмов и методов обучения в области в области, но и ускоренных аппаратных характеристик и повышение технологии общей обработки GPU (GPGPU). В этой статье вы узнаете о многослойном PercePtron (MLP), который является одним … нейронные сети с Sklearn MLPREGRESSOR Подробнее »

Автор оригинала: Chris.

Нейронные сети приобрели огромную популярность в последние годы. Это не только результат улучшенных алгоритмов и методов обучения в области в области, но и ускоренных аппаратных характеристик и повышение технологии общей обработки GPU (GPGPU).

В этой статье вы узнаете о Многослойный Perceptron (MLP), который является одной из самых популярных нейронных сетевых представлений. После прочтения этой 5-минутной статьи вы сможете написать собственную нейронную сеть в одной строке Code Python!

Если вы хотите пропустить справочную информацию, не стесняйтесь Перейти к разделу Sklearn о MLPREGRESSOR И скопируйте и вставьте код, чтобы использовать нейронные сети в собственном сценарии прямо сейчас!

Видео MLPREGRESSOR

Генерация данных и предварительная обработка

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

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

Данные тренинга основаны на ответах на следующие шесть вопросов:

  1. Сколько часов вы подвергались воздействию кода Python за последние 7 дней?
  2. Сколько лет назад вы начали узнавать о информатике?
  3. Сколько книг кодирования на вашей полке?
  4. Какой процент вашего времени Python вы тратите реализацию реальных проектов?
  5. Сколько вы зарабатываете в месяц (раунду до 1000 долларов) от продажи ваших технических навыков (в самом широком смысле)?
  6. Какой у тебя приблизительный Finxter.com Рейтинг (раунду до 100 баллов)?

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

Шестой вопрос приближается к уровню квалификации кодер Python. Finxter.com – это обучающая платформа, основанная на головоломках, которая назначает значение рейтинга любому кодезу Python на основе их характеристики в решении головоломок Python.

Давайте начнем с визуализации, как каждый вопрос влияет на выход (рейтинг навыков Python Developer).

Обратите внимание, что эти участки показывают, как каждая отдельная функция (вопрос) влияет на окончательный рейтинг Finxter, но это ничего не говорит нам о влиянии комбинации двух или более функций. Некоторые Pythonistas не ответили на все шесть вопросов – в этом случае я использовал фиктивное значение «-1».

Что такое искусственная нейронная сеть?

Идея создания теоретической модели человеческого мозга (биологическая нейронная сеть) чрезмерно изучена в последние десятилетия. Основы искусственных нейронных сетей уже были предложены в 1940-х и 1950-х годах! С тех пор концепция искусственных нейронных сетей была усовершенствована и улучшена все больше и больше.

Основная идея состоит в том, чтобы нарушить большую задачу обучения и вывод в ряд микрозаходов. Эти микрозаправки не являются независимыми, а взаимозависимыми. Мозг состоит из миллиардов нейронов, которые связаны с триллионами синапсов. В упрощенной модели обучение ничто, кроме регулировки «силы» синапсов (также называемых «весами» или «параметры» в искусственных нейронных сетях). Создание нового синапса представлена как увеличение веса от нуля до ненулевого значения.

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

Идея состоит в том, что активация входных нейронов распространяется через сеть: нейроны «огонь». Нейрон пожали с более высокой вероятностью, если его актуальные входные нейроны тоже.

Но давайте представим подробный взгляд, насколько математически работают нейроны.

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

Сама нейрона просто суммирует все входы, чтобы рассчитать свой собственный выход. Таким образом, импульсы распространяются через нейронную сеть.

Что делает алгоритм обучения? Он использует тренировочные данные для выбора весов W нейронной сети. Учитывая тренировочное значение входного значения x, разные веса W приводят к разным выходам. Следовательно, алгоритм обучения постепенно изменяет веса W – во многих итерациях – до тех пор, пока выходной слой не дает аналогичные результаты в качестве учебных данных. Другими словами, алгоритм обучения постепенно снижает ошибку правильного прогнозирования данных обучения.

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

Нейровая сеть Sklearn с MLPREGRESSOR

Цель состоит в том, чтобы создать нейронную сеть, которая предсказывает уровень квалификации Python (рейтинг Finxter) с использованием пяти функций ввода (ответы на вопросы):

  1. Неделя : Сколько часов вы были выставлены на код Python за последние 7 дней?
  2. Лет : Сколько лет назад вы начали узнавать о информатике?
  3. Книги : Сколько Кодирование книг на вашей полке?
  4. Проекты : Какой процент вашего времени Python вы тратите реализацию реальных проектов?
  5. Заработать : Сколько вы зарабатываете в месяц (раунду до 1000 долларов) от продажи ваших технических навыков (в самом широком смысле)?

Мы используем Scikit -Узнают ( Sklearn ) Библиотека для нейронной сети регрессии.

## Dependencies
from sklearn.neural_network import MLPRegressor
import numpy as np


## Questionaire data (WEEK, YEARS, BOOKS, PROJECTS, EARN, RATING)
Q = [[20,  11,  20,  30,  4000,  3000],
     [12,   4,   0,   0, 1000,  1500],
     [2,   0,   1,  10,   0,  1400],
     [35,   5,  10,  70,  6000,  3800],
     [30,   1,   4,  65,   0,  3900],
     [35,   1,   0,   0,   0, 100],
     [15,   1,   2,  25,   0,  3700],
     [40,   3,  -1,  60,  1000,  2000],
     [40,   1,   2,  95,   0,  1000],
     [10,   0,   0,   0,   0,  1400],
     [30,   1,   0,  50,   0,  1700],
     [1,   0,   0,  45,   0,  1762],
     [10,  32,  10,   5,   0,  2400],
     [5,  35,   4,   0, 13000,  3900],
     [8,   9,  40,  30,  1000,  2625],
     [1,   0,   1,   0,   0,  1900],
     [1,  30,  10,   0,  1000,  1900],
     [7,  16,   5,   0,   0,  3000]]
X = np.array(Q)


## One-liner
neural_net = MLPRegressor(max_iter=2000).fit(X[:,:-1], X[:,-1])

## Result
res = neural_net.predict([[0, 0, 0, 0, 0]])
print(res)

В первых нескольких линиях мы создаем набор данных. Алгоритмы изучения машин в библиотеке Scikit-Sulect используют аналогичный входной формат: каждая строка представляет собой однократное наблюдение с несколькими функциями. Чем больше строк, тем больше существует более учебные данные; Чем больше столбцов, тем больше особенности каждого наблюдения.

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

One-LiLER просто создает нейронную сеть, используя конструктор MLPREGRESSOR учебный класс. Причина, по которой я прошел max_iter = 2000 В качестве аргумента просто потому, что переводчик жаловался, что тренировка не сходится с использованием количества итераций по умолчанию (I.E., max_iter = 200 ).

После этого мы называем Fit () Функция, которая определяет параметры нейронной сети. Только после вызова посадки нейронная сеть была успешно инициализирована. Fit () Функция принимает многомерный входной массив (одно наблюдение на строку, одну функцию на столбцу) и одномерное выходное массив наблюдений).

Единственное, что осталось, вызывает функцию прогнозирования на некоторых значениях входных данных:

## Result
res = neural_net.predict([[0, 0, 0, 0, 0]])
print(res)
# [94.94925927]

На простом английском: если

  • Вы тренировали 0 часов на прошлой неделе,
  • Вы начали свои науки о науке о компьютерных науках 0 лет назад,
  • У вас есть 0 книги кодирования на шельфе,
  • Вы тратите 0% вашего времени, внедряющие реальные проекты Python,
  • Вы зарабатываете 0 $ 0, продающие свои навыки кодирования,

Оценки нейронных сетей о том, что ваш уровень квалификации очень низкий ( Finxter.com Номер рейтинга 94 означает, что вы даже не можете понять программу Python Print («Hello World») ).

Итак, давайте улучшим на этом: что произойдет, если вы инвестируете 20 часов в неделю обучения и пересмотрели нейронную сеть через неделю?

## Result
res = neural_net.predict([[20, 0, 0, 0, 0]])
print(res)
# [440.40167562]

Неплохо, ваши навыки достаточно значительно улучшились! Но вы все еще не довольны этим номером рейтинга (выше средний уровень Python Coder имеет не менее 1500-1700 рейтинга на Finxter.com), вы?

Нет проблем, просто купите 10 книг Python (если вы любите кодовые головоломки, может быть, даже моя книга Python «Coffe Break Python»).

Посмотрим, что происходит с вашим рейтингом.

## Result
res = neural_net.predict([[20, 0, 10, 0, 0]])
print(res)
# [953.6317602]

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

## Result
res = neural_net.predict([[20, 1, 10, 0, 0]])
print(res)
# [999.94308353]

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

Но вы не сдаетесь, верно? Далее вы тратите 50% своего времени Python, продавая свои навыки в качестве навыков Python Freelancer (вам нужна помощь с этим? Я покажу вам, как продать свои навыки кодирования на рынке – даже в качестве начинающего Python – в моем курсе Python Freelance Несомненно

## Result
res = neural_net.predict([[20, 1, 10, 50, 1000]])
print(res)
# [1960.7595547]

Борьси! Внезапно нейронная сеть считает, что вы являетесь экспертом Python Coder. Действительно, очень мудрый прогноз нейронной сети! Узнайте Python по крайней мере в год и делать практические проекты, и вы станете отличным кодером.

Резюме

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

Некоторые алгоритмы обучения машины важнее других. Узнайте о « 8 алгоритмов обучения станка для машины » в моем новом курсе на Академия информатики Finxter !

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

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