Дайджест skillfactory: топ-7 статей по python

Использование лямбда-выражений с функциями высшего порядка в Python

1. Map ()

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


Синтаксис

map (function,inputs)

Здесь мы используем лямбда-выражение как аргумент функции map, что после этого детально конвертируется в список.  

Сходным образом мы можем использовать функцию filter, которая выводит данные на основе определенного условия.

3. Reduce ()

Более подробно почитать об этих функциях можно в статье Full Stack- разработчика, Rupesh Mishra. Он рассказывает как их использовать, описывая базовый синтаксис и снабжая все это примерами.

Попробуйте отдохнуть

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

Итак, вы вернулись из отпуска и снова окунулись в работу. Если вы чувствуете прилив сил и готовы свернуть горы, то все хорошо. Понаблюдайте за этими ощущениями в течение какого-то времени, чтобы убедиться, что вам действительно нужен был лишь отпуск. Но, если вы вышли на работу и осознали, что раздражение не прошло, а только усилилось, и вы все также не хотите работать в данной сфере, то это сигнал к тому, что пора что-то делать. 

Постарайтесь разобраться с тем, что вас не устраивает в текущей работе. Не спешите подавать заявление на увольнение. Выделите время, сядьте и ответьте на пару вопросов.

  1. Получаете ли вы удовольствие от того, чем занимаетесь сейчас? 
  2. Хотите ли вы развиваться в данной сфере?
  3. Может вам вам просто стоит сменить место работы?
  4. Что именно вам не нравится на текущей работе?

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

Хорошие конференции и митапы

International Conference on Big Data and its Applications (ICBDA)

  • Самая серьезная конференция по Big Data на русском языке/li>
  • Участвуют представители бизнеса, научные сотрудники, ученые и создатели новых технологий
  • Включает соревнования, научный семинар, выставку
  • Крупнейшая международная конференция, которая сегодня проводится в крупнейших технологических центрах, таких как Сан-Хосе,Нью-Йорк, Лондон и другие
  • Все звезды и все новинки — здесь
  • Кроме конференции проводятся воркшопы и обучение, возможно также онлайн-участие
  • Ежегодный фестиваль и IT-форум, посвященный анализу данных, проходящий в Москве
  • Для профессионалов в области Big Data и новичков в этой сфере
  • Большие данные, искусственный интеллект, глубинное обучение, множество бизнес-кейсов
  • Ежегодная конференция по Data Science, проходящая раз в год в Москве
  • Для разработчиков, инженеров, исследователей
  • Кейсы, на примере которых наглядно показывается, почему не стоит забивать гвозди микроскопом
  • Одно из самых крупных и живых сообществ по анализу данных в рунете
  • В основе — групповой чат Slack
  • Здесь можно проконсультироваться, узнать о новых технологиях, найти работу и найти data scientist’а
  • Группа, посвященная митапам по Data Science в Москве
  • Анонсы встреч, лекций, мастер-классов, выступлений, обсуждений — все на тему Data Science
  • Для людей, занимающихся и интересующихся анализом, визуализацией данных и майнингом

Бэкенд

Бэкенд-разработка обычно остаётся скрытой от глаз пользователя. Бэкендеры занимаются серверной частью работы веб-сайта — то есть той, где всё обрабатывается. Они оперируют набором аппаратно-программных средств для реализации логики работы сайта. Сервер — это такой же компьютер, только более мощный, он отвечает на запросы пользователей, и на нём хранятся данные. Бэкенд-разработчик может пользоваться любыми инструментами, которые есть на сервере, а значит, может использовать любой язык программирования. Их существует довольно много, вот список наиболее популярных:

  • Java (и другие языки JVM, например, Scala, Groovy, Clojure);
  • PHP;
  • .NET (C#, VB);
  • Ruby;
  • Python;
  • Perl;
  • Javascript (Node JS);
  • Actionscript (Flash Media Server);
  • CoffeeScript;
  • C (CGI);
  • Erlang;
  • SQL.

О самых популярных языках программирования можно почитать в удобной подборке от Лоренс Брэдфорд, разработчицы-самоучки с образованием экономиста, которая горит идеей сделать образование доступным каждому. Статья раскроет тему многообразия языков программирования, которыми пользуются бэкендеры. Вы найдете описание и характеристику каждого из них, узнаете, где их можно применять, сколько платят специалисту, владеющему тем или иным языком, а ещё — какие компании используют тот или иной язык. Например, программисты Uber, Pinterest, Mozilla, Spotify, Quora, Pandora, Netflix и Asana используют Python.

Кстати, Python — очень популярный среди бэкендеров язык, он становится популярным и развивается с необыкновенной скоростью. И это неслучайно: язык используется в вебе, мобильных устройствах, приложениях, а также сервисах, использующих машинное обучение. У него простой синтаксис, и по сравнению с другими языками, он окажется более понятным, особенно для новичков. Изучить его можно разными способами: как самостоятельно, так и с помощью экспертов. Например, можно окончить курс по Python для веб-разработки полного цикла. Он длится 6 месяцев, и после его прохождения вы сможете выполнять заказы по Python на фриланс-биржах. А Игорь Мосягин, R&D разработчик Lamoda с опытом программирования на Python более 10 лет, вместе с другими преподавателями помогут не только с освоением теории, но и дадут массу практических заданий.

Можно попутно почитать что-нибудь полезное, взгляните на нашу подборку:

  • Python Cookbook, Brian Jones, David Beazley.
  • Learning Python, Mark Lutz.
  • Programming Python, Mark Lutz.
  • Python Pocket Reference, Mark Lutz.

Возвращаясь к описанию позиции бэкенд-разработчика, добавим, что он также работает с базами данных, для чего использует такие инструменты, как MySQL, SQL Server и Oracle. В зависимости от продукта, спектр обязанностей бэкендера может меняться. Он может создавать и комбинировать базы данных, управлять безопасностью, создавать технологии резервного копирования и восстановления.

Не окунайтесь в омут с головой, дайте себе время

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

Учтите, что для получения многих современных профессий не обязательно учиться в университете, и часто достаточно курсов, которые длятся от пары недель до нескольких месяцев. Занятость на подобных курсах позволяет совмещать их с работой, так что вы сможете получить необходимую профессию, не отрываясь от работы. Есть множество интернет школ, например SkillFactory, где вас обучат различным интернет-профессиям, а также помогут окунуться в новую среду. 

Недостатки онлайн обучения:

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

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

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

Текст: Диана Саляхутдинова

Будем пробовать

Сначала я посмотрел API Medium, но решил, что он только ограничивает возможности. Мне было не с чем работать. Я мог получить информацию только о своей учетной записи, а не о других пользователях.

Кроме того, последнее изменение API Medium было более года назад.

Я понял, что мне придется полагаться на HTTP-запросы для получения данных, поэтому я начал ковыряться с помощью Chrome DevTools.

Первой целью было получить перечень моих подписок.

Я открыл DevTools и перешел на вкладку «Network». Я отфильтровал все, кроме XHR, чтобы увидеть, откуда Medium получает список моих подписок. Я нажал кнопку обновления страницы в своем профиле, но не получил ничего интересного.

Но что если я нажму на «Подписки»? Бинго.

Я написал функцию, чтобы превратить очищенный от лишних символов JSON в словарь Python:

Я нашел точку входа. Да начнется код.

Шаг 2: Разбор кода и его изменение

Загрузите репозиторий с GitHub и распакуйте его.

Внутри zip-файла

Внутри вы найдете файл с кодом и пакет для деплоя.

  • whatsapp_messaging.py
  • aws_lambda_deploy.zip

Текст файла whatsapp_messaging

Разберем построчно весь код.

Строка 1: импортируем пакет Twilio и используем его REST-клиент для взаимодействия с Twilio API.

Строка 3: создаем функцию msg_mom_and_dad, которая будет запускаться AWS каждый день в определенное время.

Строки 6–7: указываем sid и auth_token вашей учетной записи, получение которых описано в первом шаге.

Строка 9: создаем клиент Twilio с нашими учетными данными.


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

Строки 15-21: запускаем цикл, который проходит через каждую пару из ключа и значения (сейчас у нас есть только одна). В body укажите сообщение, которое вы хотите отправить. Я остановился на простом варианте: сначала идет текст “доброе утро”, а после этого значение ключа. Так что в моем случае мы получим сообщение «доброе утро, папочка!». Затем мы указываем номер отправителя, который ранее вы получили от Twilio, и номер получателя, который вы подключили сообщением к Twillio Sandbox.

Строка 23: эта строчка проверяет статус сообщения через вывод SID. Но нам это не понадобится.

Итого, вам нужно будет сделать замену в пяти местах: 

  • twilio_sid
  • auth_token
  • contact_directory
  • from_
  • body (optional)

После того, как вы замените все, что нужно, сохраните файл. Теперь разархивируйте aws_lambda_deploy.zip и замените whatsapp_messaging.py внутри на вашу новую версию. Заархивируйте папку обратно, нам нужно было только поменять в коде учетные данные и контакты. Теперь у вас готов пакет для деплоя.

Перламутровые пуговицы

Что ещё можно делать с массивами? Например, структура под названием “куча” (heap) позволяет программисту в любой момент определить в ряду значений минимальное.

Функционально “куча” представляет собой бинарное дерево, где каждый родитель больше   двух своих наследников. Таким образом, верхний узел (heap) всегда оказывается самым меньшим из всего массива.

Пример “кучи” из технического описания модуля heapq.heap <= heap и heap <= heap для всех k, начиная с нуля.

Список доступных в Python операций с “кучей” включает определение наименьшего элемента, его добавление или удаление, слияние нескольких массивов и др. С помощью “кучи”  вы можете, например, выстроить приоритетную очередь для нескольких равноправных процессов, объединить записи двух журналов и выставить их в хронологическом порядке.

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

Одни и те же данные в виде “кучи” и массива.

Ещё одна вариация структуры на основе массива — двухсторонняя очередь (double-ended queue, deque). Она объединяет в себе функции стека и, собственно, очереди. Как вы помните, главное отличие между этими двумя структурами — порядок получения сохранённых данных. В очереди первыми предоставляются те данные, которые были раньше в ней сохранены (принцип First-In-First-Out). В стеке — наоборот, как в стопке книг или тарелок, сверху оказываются самые новые элементы (First-In-Last-Out).

Двусторонняя очередь позволяет работать с данными с обеих сторон массива — добавлять и удалять элементы как в начале, так и в конце. Классический пример практического применения — планировщик задач для параллельных вычислений. Для каждого участвующего процессора формируется отдельная deque, в которую потоки сохраняются по принципу FIFO. Освободившийся процессор забирает первую задачу в своей очереди. Если она пуста, он обращается к deque другого процессора и забирает себе задачу, которая стоит там последней.

На этом сегодняшний теоретический экскурс окончен. Надеемся, что эти знания помогут вам в изучении Python и покорении новых вершин веб-разработки.

текст: Помогаев Дмитрий

Порядковая регрессия

Этот метод позволяет изучать явления в привязке к значениям каких-либо шкал. Например, когда речь идет об отношениях пользователей к дизайну сайта — от “совсем не нравится” до “очень нравится”. Или в медицинских исследованиях таким образом можно понять, как меняются ощущения пациентов (от “очень сильной боли” до “совсем нет боли”).

Почему для этого нельзя применять линейную регрессию? Потому что она не учитывает смысловую разницу между разными разрядами шкалы. Возьмем для примера трех людей ростом в 175 см и весом в 55, 70 и 85 кг. 15 килограммов, на которые самый худой и самый тучный человек отстоят от участника со средним показателем, для линейной функции имеют одинаковое значение. А с точки зрения социологии и медицины это разница между ожирением, дистрофичностью и нормальным весом.

Bokeh

Создает интерактивные и масштабируемые графики в браузерах, используя виджеты JavaScript. Имеет три уровня интерфейса, от высокого, который позволяет быстро создавать сложные графики, до низкого. Примеры визуализации:

Используемый код:

import numpy as np

from bokeh.layouts import gridplot from bokeh.plotting import figure, show, output_file

x = np.linspace(0, 4*np.pi, 100) y = np.sin(x)

TOOLS = «pan,wheel_zoom,box_zoom,reset,save,box_select»

p1 = figure(title=»Legend Example», tools=TOOLS)

p1.circle(x,   y, legend=»sin(x)») p1.circle(x, 2*y, legend=»2*sin(x)», color=»orange») p1.circle(x, 3*y, legend=»3*sin(x)», color=»green»)

p2 = figure(title=»Another Legend Example», tools=TOOLS)

p2.circle(x, y, legend=»sin(x)») p2.line(x, y, legend=»sin(x)»)

p2.line(x, 2*y, legend=»2*sin(x)», line_dash=(4, 4), line_color=»orange», line_width=2)

p2.square(x, 3*y, legend=»3*sin(x)», fill_color=None, line_color=»green») p2.line(x, 3*y, legend=»3*sin(x)», line_color=»green»)

output_file(«legend.html», title=»legend.py example»)

show(gridplot(p1, p2, ncols=2, plot_width=400, plot_height=400))  # open a browser

Веб-разработчик от SkillFactory

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

Квантильная регрессия

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

Для применения квантильной регрессии в Python вам понадобится пакет statsmodels. С его помощью вы сможете анализировать информацию с помощью настраиваемых квантилей, получая возможность смотреть на данные под разными углами.

Начало работы

Для начала импортируем все необходимые нам модули, а также загрузим изображение в объект Python:

Примечание. Никто не заставляет вас импортировать модули с помощью конструкции import … as …, давая им такие же имена, как и я. Однако почти во всех «литературных» источниках NumPy импортируется с псевдонимом np, а matplotlib.pyplot — plt.

По поводу кода не беспокойтесь, в конце статьи будет указана ссылка на .ipynb документ, который вы сможете легко загрузить и изменить под своё усмотрение.

Загрузка изображения происходит с помощью функции open() под-модуля Image:

Jupyter Notebook выводит изображения просто по их имени. Вот то самое изображение, путь к которому я передал в функцию:

Однако далее мы создадим свою функцию, чтобы у нас была возможность добавить надпись над фотографией (заголовок) или поменять её размер.

Вывод изображений с matplotlib


Вот функция, которую мы будем использовать далее. Она принимает два параметра: img — массив, который мы получили из исходной фотографии и title — заголовок, который по умолчанию имеет значение None. Мы изменяем размеры фигуры на 6×6, чтобы сделать вывод изображения больше, и выводим его на экран. Также мы проверяем, был ли указан заголовок, и в таком случае устанавливаем его с помощью функции title(). Выключим пометки на осях, указав ‘off’ в функцию axis().

Специализация Full-stack веб-разработчик на Python Идет набор в группу 5 900₽ в месяц

Подробнее

Преобразование в «черный-белый»

Сейчас мы будем преобразовывать изображение в черно-белые тона. Пока что мы не будем преобразовывать загруженное изображение в массив, ибо здесь мы будем использовать метод convert() классаизображения PIL.

Функция выглядит очень просто:

Немного про само изображение. Мы представили его в RGB формате, то есть каждый пиксель имеет три значения — красный, зелёный и синий. Оттенки серого получаются, когда все эти три значения равны. Изначальная идея состояла в том, чтобы просто взять среднее арифметическое трёх значений. Однако позже я вспомнил об одной известной формуле яркости пикселя:

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

PIL использует свои коэффициенты, потому просто давайте просмотрим результат:

Да, мы немного потеряли в качестве из-за того, что растянули изображение с помощью matplotlib. Однако инструмент действительно работает (для сравнения можете реализовать мою первоначальную идею про среднее арифметическое).

Что мы хотим? Массив!

Далее мы будем использовать инструменты NumPy, потому желательно конвертировать изображение в np.array:

Да, конструктор массива принимает изображение в качестве аргумента и создаёт вот такой массив. Узнаем форму массива с помощью поля shape.

224 x 225 — размеры нашего изображения. 3 появляется из-за того, что каждый пиксель представлен тремя значениями.

Негатив

Значения цветов могут меняться от 0 до 255. Негатив — эффект «переворачивания» цветов. Достигается он довольно просто: от 255 мы просто отнимаем значение цвета. Т. к. все операции над массивом numpy выполняются векторизированно (поэлементно), то мы просто отнимем от 255 текущий массив:

С помощью нашей функции show() оценим результат:

Swap «left-right»

Следующей задачей у нас является «разворот» изображения слева направо (т. е. правая и левая стороны изображения меняются местами). В NumPy есть замечательная функция fliplr и её «близкий друг» flipud. 

Про их применение можно найти информацию здесь.

Нас интересует только функция fliplr, в которую мы и передадим исходный массив: 

Данный фрагмент кода не изменяет массив, а возвращает новый, что нам и нужно. Оценим результата работы:

Добавим синего

Последний эффект я случайно обнаружил у себя в телефоне, после чего мне показалось хорошей идеей реализовать его. Идея проста — нам нужно сделать изображение как можно синее. Для этого я предлагаю заменить каждое третье «значение пикселя» на максимальное — 255. 

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

Потому мы копируем последовательность с помощью np.copy(). 

Также имеет место быть другая конструкция:

И, по традиции, выводим результат:

Метод главных компонент

Анализ главных компонент (Principal Components Analysis) — это еще один способ уменьшить размерность данных. Он построен на создании ключевых независимых переменных, которые оказывают наибольшее влияние на функцию. Таким образом можно построить регрессионную модель на основе сильно зашумленных данных. На первом этапе аналитик определяет среди них главные компоненты, далее применяет к ним необходимую функцию.

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

По этой причине применение PCA не подходит для объяснения фактических связей между переменными — это скорее создание имитационной модели на основе известных данных о том или ином явлении.

Интерактивные курсы

  • CheckiO — это геймифицированный веб-сайт, содержащий задачи по программированию, которые можно решить на Python 3.
  • Python on Codecademy — портал для обучения.
  • Code the blocks объединяет программирование на Python с трехмерной средой, в которой вы можете «размещать блоки» и строить структуры. Также вы найдете там учебные пособия, которые постепенно научат Вас создавать сложные 3D-структуры.
  • Computer Science Circles содержит 30 уроков, 100 упражнений. На сайте есть встроенный чат, куда ученик может обратиться за помощью к учителю. Общение в чате происходит на голландском, французском, немецком и литовском языках.
  • DataCamp Python Tutorial. В отличие от большинства других учебных пособий по Python, этот 4-х часовой учебный курс от DataCamp фокусируется на Python для Data Science. Он содержит 57 интерактивных упражнений и 11 видеоуроков.
  • Finxter. Насколько хороши Ваши навыки Python? Более 300 отобранных головоломок на Python для тестов и тренировок.
  • How to Think Like a Computer Scientist: Interactive Edition — это интерактивное переосмысление книги Элкнера, Дауни и Майера с визуализацией и звуковыми пояснениями.

Кто такой Fullstack-разработчик и чем занимается?

Требования к фуллстек-разработчикам у современных работодателей не ограничиваются знаниями фронтенда и бэкенда. Специалист должен уметь:

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

Программист, который владеет полным стеком технологий, более свободен в выборе инструментов для решения задач в IT. Это бесценный навык для сотрудника, который работает на аутсорсинге или на фрилансе. В крупных компаниях, где остро стоит вопрос делегирования, также востребованы квалифицированные  fullstack-разработчики. Прокачать навыки профессии с нуля предлагает онлайн-школа SkillFactory.

Стоимость

Полная стоимость: 109992 рублей

Цена со скидкой: 65400 рублей

Рассрочка без первого взноса: 5 450 рублей в месяц

Шаг 3: Загрузка скрипта на AWS

Наш код готов к запуску и отправке сообщений. Если вам любопытно что из себя представляют остальные файлы в папке, то это пакет Twilio и файлы, необходимые для его работы. Они нам нужны потому что мы будем использовать сервис безсерверных вычислений AWS Lambda, на котором не предустановлен Twilio. Почему мы просто не используем команду “pip install twilio” для установки? Дело в том, что у нас нет сервера для этого.

AWS Lambda — это сервис, куда вы можете поместить фрагмент кода, который вы хотите запускать только на время, определенное различными триггерами, в соответствии с вашими потребностями. Для нашей маленькой задачки запуск реального сервера, который будет работать 24/7 — это бесполезная трата вычислительных ресурсов и денег. При использовании AWS Lambda наш код будет работать только в течение очень короткого времени каждый день в зависимости от указанного временного триггера.

Сервис Lambda очень доступен и разрешает делать бесплатно до миллиона запросов в месяц.

Залогиньтесь на https://aws.amazon.com. Затем выберите Services -> Compute -> Lambda -> Create a function.

Далее дайте вашей функции имя и выберите Python 3.6 в качестве среды. Поскольку нам не нужно подключаться к другим сервисам AWS, нам подойдет и базовое разрешение.

Теперь нажмите на кнопку “create function” и вы попадете на главную панель инструментов.

В блоке Function code укажите, что мы хотим запускать наш Python-файл whatsapp_messaging и функцию msg_mom_and_dad каждый раз, когда вызывается наша функция. Измените настройки так, как указано выше.

Кликните на  “upload” и загрузите пакет для деплоя, который вы создали.

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

Наш последний шаг — это сделать так, чтобы скрипт запускался каждый день в определенное время. Для этого нажмите add trigger -> CloudWatch Events.


Нам нужно создать новое правило. Дайте ему имя и описание, удобное для вас, и укажите “schedule expression” в качестве типа правила.

Указанное время “cron(). 30 1” соответствует 1:30 по UTC (и моим 7 утра по IST). Следующие две звездочки соответствуют дню и месяцу.  Последние два символа — вопросительный знак и звездочка, — означают день недели и год. Я использую * и ? для того, чтобы выбрать каждый день, месяц и год. Вы можете создать свои настройки на основе моих и примеров указанных ниже или воспользоваться гайдом на , чтобы изучить все возможные параметры.

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

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

Вот и все! Вам осталось поменять имя с Twilio Sandbox на свое и приступить к использованию. Теперь вы сможете вести всю переписку через Twillio: на панели управления вы увидите сообщения, которые отправили в ответ на “Доброе утро”, и сможете отреагировать на них там же.

Оригинал: I Wrote a Script to WhatsApp My Parents Every Morning in Just 20 Lines of Python Code

Перевод: Ухарова Елена

Несколько финальных замечаний

Попробуйте теперь запустить нейронную сеть, используя в терминале эту команду:

python main.py

Результат должен быть таким:

Ура, мы построили простую нейронную сеть с помощью Python!

Сначала нейронная сеть задала себе случайные веса, затем обучилась на тренировочном наборе. После этого она предсказала в качестве ответа 0.99993704 для нового примера  . Верный ответ был 1, так что это очень близко к правде!

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

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

Оригинал: How to build a simple neural network in 9 lines of Python code

Перевод: Ухарова Елена

Метод опорных векторов (Support-Vector Machine)

Как говорилось выше, техника SVM применяется для классификации объектов. Для этого используется концепция векторных пространств — математических структур, объединяющих множество векторов, с которым можно проводить операции сложения, вычитания и умножения.

Для решения этой задачи каждая переменная (фактически, каждый объект, который нужно отнести к тому или иному классу) выражается в виде точки в n-мерном пространстве, где n — это количество характеристик, которыми вы располагаете. Координаты каждой точки обозначают соответствующие характеристики. Далее алгоритм с помощью метода опорных векторов находит гиперплоскость, которая пролегает точно между группами наших объектов.

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

Пример метода опорных векторов на двумерном пространстве — гиперплоскость С обеспечивает требуемый результат.

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

R и Python: лицом к лицу

Чтобы разобраться со многими вопросами выбора, стоит получше разобраться, что из себя представляют главные рабочие лошадки аналитика. У R и Python много общего, а различия в деталях и определяют специфику каждого языка.

Появление Python и R разделяет два года — первый увидел свет в 1991 году, второй в 1993-м. Оба языка создавались с таким расчетом, чтобы будущие разработчики могли расширять набор их функций с помощью подключаемых библиотек. С этим связано и использование открытого кода — ничто не мешает энтузиастам развивать, дополнять, достраивать и перестраивать.

Главная аудитория Python — это разработчики ПО и веб-разработчики. Именно для этих экспертов создается большинство функциональных модулей, позволяющих загружать данные, проводить с ними сложные операции, моделировать и анализировать. Чтобы стать хорошим веб-разработчиком достаточно собрать набор из десятка библиотек, с помощью которых можно закрыть основной круг базовых задач при сайтостроительстве.

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

С точки зрения аналитиков данных и экспертов по Data Science R и Python обладают схожими возможностями. Первый язык чаще выбирают специалисты, которым нужно работать с огромными массивами информации, на втором останавливаются создатели нейросетей и экспериментаторы в области машинного обучения. Следовательно, если вы уже знаете, какая область вам более интересна, вы можете планировать свое профессиональное образование.

Текст: Помогаев Дмитрий

В каких случаях нужно использовать лямбда-выражения?

  1. Когда вам нужно вычислить результат с помощью какого-либо выражения.
  2. Когда вы не хотите совершать ненужные вызовы функций.

Не злоупотребляйте лямбда-функциями, используя их без надобности

Если вы хотите определить функцию, которая выполняет конкретную задачу и является важной, то она заслуживает имени. К тому же, так вы сделаете код более читаемым

Анонимные функции зачастую сложно интерпретировать, и у них сложный синтаксис. 

Они не поддерживают строку документации, и поэтому задокументировать их функциональность крайне сложно.

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

Ну а в начале мы писали, что разные языки по-разному используют анонимные функции. Так вот в статье Андрея Мискова об их применении в JS вы найдете подробное описание спорных моментов их использования, а также конкретные примеры для сравнения с другими языками, в том числе, Python. 

Удачного вам погружения в мир разработки и Python!

текст: Любицкая Дарья

Регрессия Кокса

Последняя в нашей подборке модель используется для оценки времени до определенного события. Какова вероятность, что сотрудник проработает в компании 10 лет? Сколько гудков готов ждать клиент, прежде чем положит трубку? Когда у пациента наступит следующий кризис?

Модель работает на основе двух параметров: один отражает течение времени, второй, бинарный показатель определяет, случилось событие или нет. Это напоминает механику логистической регрессии, однако та техника не использует время. Основополагающие предположения для регрессии Кокса состоят в том, что между независимыми переменными нет корреляции и все они линейно влияют на ожидаемое событие. Кроме того, в любой отрезок времени вероятность наступления события для любых двух объектов должна быть пропорциональна.

***

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

Текст: Помогаев Дмитрий


С этим читают