...

суббота, 9 января 2021 г.

Илон Маск продаст все свое имущество и потратит около $188 млрд для колонизации Марса


Главу SpaceX и Tesla Inc Илона Маска не особо заботит тот факт, что он стал самым богатым человеком в мире. Его главная цель — не деньги, а колонизация Марса. Раньше он рассказывал о том, что все его бизнесы работают именно на реализацию этой цели. И сейчас, похоже, лучшее время для выполнения своих планов.

Маск заявил о том, что в ближайшее время он продаст все свое имущество, переведя его в деньги, для того, чтобы ускорить подготовку полета на Марс с дальнейшей колонизацией Красной планеты. Он говорит, что недвижимость ему не нужна — спать он может и в офисе на фабрике Tesla. Его детям нужен дом, но его он может арендовать, для этого не обязательно быть владельцем.
Недвижимости у него довольно много, общая стоимость ее достигает $100 млн. В 2020 году Маск уже продал несколько домов. Сейчас он собирается сделать то же самое с остальной недвижимостью. Ну и плюс все свои средства он также готов вложить в освоение Марса.

«Я считаю, что для человечества очень важно стать космической цивилизацией, межпланетным видом. Для создания города на Марсе я собираюсь потратить большое количество ресурсов. Я хочу вложить так много, как только возможно», — рассказал он. «Говоря все это, я серьезен. Я не собираюсь больше использовать свою недвижимость. Люди говорят, что у меня ее много, но ок, теперь у меня не будет ничего».

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

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

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


Марс предприниматель провозглашает «свободной планетой», где будут действовать собственные законы. В разделе условий говорится, что на Земле и Луне компания подчиняется земным законам, а вот на Марсе — иное дело, здесь будут «установлены принципы самоуправления, направленные на процветание будущей колонии». Этот пункт начнет работать только тогда, когда на Марсе появится колония.Ранее Маск неоднократно заявлял, что собирается построить на Марсе поселение, которое не будет зависеть от снабжения ресурсами от Земли. Это будет целиком и полностью автономное поселение — и сейчас стало ясно, что под «автономностью» глава SpaceX имеет в виду не только еду, воду, одежду, технику, горючее, но и законодательство.

Зачем Маску Марс? Для того, чтобы у человечества был «бэкап», который можно использовать в случае появления глобальных проблем, которые приведут к вымиранию человечества. Речь идет о третьей мировой войне, инфекциях или чему-то подобном. Маск неоднократно заявлял, что без основания колонии на другой планете Солнечной системы человечество обречено.

«Если мы построим столько же кораблей Starship, сколько у нас ракет Falcon — то есть около сотни, — и каждый будет доставлять на орбиту 100 тонн груза, то пропускная способность достигнет 10 млн тонн полезной нагрузки в год», — написал глава SpaceX.

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

Let's block ads! (Why?)

Опыт создания логотипов с искусственным интеллектом от Студии Лебедева

Здравствуйте! С момента открытия миру, что под именем Николая Иронова в Студии Лебедева работала настоящая нейронная сеть, а также последовавших затем большого интервью с создателями Николая и открытия этого инструмента для всех желающих, прошло несколько месяцев. Другие публикации на эту тему мне не встречались, вероятно я стал одним из первых, кто поработал напрямую с Николаем, не будучи при этом как-либо связанным со студией. В этой статье я постарался описать свой опыт. Забегая вперёд, опыт свой оцениваю как весьма успешный. Думаю, Николай Иронов - это небольшая дверка в ту самую технологическую сингулярность, которая в будущем должна сделать искусственный интеллект эффективнее человека во всём или почти во всём.

Содержание:

  1. Логика работы с нейросетью на момент написания статьи

  2. Отмеченные особенности процесса

  3. Логотипы, которые у меня получились

  4. Пример набора данных в архиве

  5. Отмеченные технические особенности

  6. Общие впечатления. Резюме

Дисклеймер. Моё мнение может отличаться от мнения других пользователей, которые поработали с Николаем Ироновым. Аналогично, поскольку я не связан со Студией Лебедева, не могу гарантировать, что моя интерпретация происходящего совпадает с тем, как это работает на самом деле.

Логика работы

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

Этап 1 - диалог с Николаем, в котором пользователь инициирует запрос на новую порцию из 9 версий логотипов в проекте с возможностью добавить уточнения. Уточнений немного: можно выбрать некоторые образы из предложенного списка, которые автор ассоциирует со своим брендом, а также можно выбрать предпочтительные стили шрифтов, цветов и графики.

Ключевым элементом этапа является текстовое описание задачи. Я пробовал поиграть с настройками, но в конечном счёте пришёл к выводу, что текст влияет сильнее и чем меньше абстракции в описании, тем точнее и интереснее графика, предлагаемая Николаем.

Этап 2 - настройка и корректировка выбранного логотипа перед этапом формирования графического набора.

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

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

Основные особенности

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

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

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

Таким образом, главная особенность, которую я для себя отметил - это непредсказуемость результата без активного участия пользователя.

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

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

Был интересный момент на уровне восприятия процесса. Изначально я не питал никаких иллюзий и был готов к тому, что этот эксперимент не приведёт вообще ни к какому результату. Однако первый логотип, который мне понравился и спустя пару месяцев продолжает нравиться, "Никто не один", Николай сгенерировал буквально 19-м по счёту. Дальше в ряде случаев у меня буквально разбегались глаза, поэтому сейчас я склоняюсь к тому, что ожидания наоборот стоит делать более серьёзными. Да, это даёт больше шансов разочароваться, зато и запрос к системе скорее всего такой подход даст возможность сделать более точным. Как я сказал выше, чем чётче исходный бриф, тем интереснее Николай выдавал мне логотипы.

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

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

Что у меня получилось

Всего на одном тарифе допускается создать до 5 проектов и скачать до 10 архивов. Изначально я затеял покупку доступа к системе для того, чтобы создать айдентику своего общественного проекта - фонда "Никто не один". В целом, учитывая ограничение на 999 версий логотипа в тарифе, я был готов к тому, что все попытки израсходую для поиска варианта, который мне подойдёт, но оказалось, что буквально с третьего сообщения от Николая с девятью очередными вариантами, там нашёлся вариант, который мне настолько понравился, что я даже не стал его никак редактировать и уже использую.

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

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

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

Пример архива

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

  1. Собственно логотип

  2. Паттерн

  3. Визитка

  4. Бланк письма

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

  6. Набор цветов фирменного стиля

Отмечу, вся графика присутствует в наборе как в формате .png, так и в .svg, но до работы с векторными версиями у меня пока не доходили руки.

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

Технические особенности

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

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

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

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

Резюме

Краткая версия: очень круто, причём как по результату, так и по впечатлению.

Чуть подробнее. По крайней мере на данный момент, при цене в 9900 рублей, которые я заплатил, это невероятно эффективное вложение средств. Никакие фрилансеры по соотношению впечатления * качество / цена не смогут встать рядом. Если вспомнить стоимость работы профессионалов, то та же Студия Лебедева Экспресс-дизайн предлагала за 100 000, причём результаты были как высоко оценённые заказчиками, так и не очень. Здесь же есть возможность напрямую влиять на результат, причём не только при составлении брифа.

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

P.S.: Оказалось, что называть машину именем, которое ей дали создатели, даже если это человеческое имя Николай, не составило для меня никакой моральной заминки. И в переписке с поддержкой, и при написании статьи это далось вполне естественно.

Let's block ads! (Why?)

Детям об аудио форматах (+тест)

Дочь, постоянно слушающая музыку через mp3-плеер, спросила: "А что, собственно, означает mp3?"

Я кратко объяснил принцип работы динамика, преобразование звуковых волн в электрические, оцифровку:

Гладкая волна становится лесенкой, но если ступенек в лесенке много, то это незаметно.

Потом рассказал про то, что закодировать лесенку в файл можно по разному:

За эталон берём компакт диск, это очень приличное качество, хотя сейчас есть уже и варианты лучше, всякие High Resolution и Super Audio CD (SACD). Если переписать компакт диск в файл на компьютере или плеере, файлы будут большие. Можно упаковать, например, в формат flac. Будет меньше, но ненамного, раза в 3-4. Зато звук хороший как у CD. А если хочется ещё меньше, то придётся ухудшать качество, и вот мы приходим к сжатию с потерями.

Объяснил про психоакустическую модель сжатия, которая используется в mp3:

Тихий звук после громкого человек слышит плохо - выкидываем. Формально люди слышат звуки высотой до 20 тысяч колебаний в секунду*, но это дети, а с возрастом уши грубеют. Так что отрезаем всё, что выше 18, а то и 16 тысяч. Чем больше выбрасываем, тем меньше становится файл. Бесконечно делать это нельзя, в какой-то момент становится заметно. Можно получить совсем маленькие файлы с отвратительным звуком. Но качество mp3 320 считается хорошим. Для того, чтобы отличить его от компакт диска, нужна качественная аппаратура и уши музыканта.

И тут дочь говорит: "А что, у меня музыкальные уши. Давай попробуем сравнить."

Мне показалось интересно. Мы попробовали.

Уши ушами, а аппаратура у нас была, конечно, аховая.

Меломан из меня тот ещё. Я бы наверно и мог себе позволить Hi-Fi систему, но когда я буду её слушать? Большую часть времени провожу за компьютером, мой выбор звука это телефон и беспроводные наушники.

Дома есть несколько пар наушников Sennheiser Momentum 2 и 3. Одна пара поддерживает беспроводной режим с AptX. Они хорошие, но проводить такой эксперимент через блютус, который сам по себе передаёт звук с потерями, было бы профанацией. Моментумы можно подключить и по проводу, но они вообще считаются предназначенными для fun listening, не мониторы.

Sennheiser Momentum 3 Wireless: хорошая штука, но не наш выбор для аудиофильских тестов
Sennheiser Momentum 3 Wireless: хорошая штука, но не наш выбор для аудиофильских тестов

Подумав, решил, что наиболее точными и нейтральными будут старые 15-летние Sennheiser HD 555. Для сенхов модель среднего класса. В отличие от моментум они открытой конструкции, это считается лучше.

Sennheiser HD 555
Sennheiser HD 555

На чём проигрывать? Сплошные компьютер и телефон. Нет у меня ничего такого. Самым качественным устройством проигрывания в доме является, стыдно сказать, тот самый карманный мп3 плеер, упомянутый в самом начале. На самом деле назвать FiiO X1 мп3-плеером это немного его обидеть, он считается уже High Resolution, хотя и начального уровня. Умеет играть всякие хитрые форматы, хотя mp3, конечно, тоже. Его и взяли.

FiiO X1. Поскольку используется ребёнком, в чехле и защитной плёнке. Некрасиво, но так оно надёжнее.
FiiO X1. Поскольку используется ребёнком, в чехле и защитной плёнке. Некрасиво, но так оно надёжнее.

Для проигрывания выбрали песню Тейлор Свифт Lover из одноимённого альбома. Я предлагал максимально сложную музыку, какой-нибудь Dream Theater, но дочь потребовала свою попсу.

В тестировании участвовали дочь, жена, и, последним, я.

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

Сравнивали варианты mp3 320 kbit и flac с CD без потерь. Для наглядности и чтобы никому, неспособному отличить mp3 320 kbit от flac не было обидно, хотел добавить к этому набору что-нибудь ощутимо низкого качетства, например mp3 128 kbit, "все альбомы группы на одном cd", привет радиорынкам 90х. Но прогресс неостановим и в сети такого уже не держат. А жать самому было лень.

Процесс тестирования:

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

Так вот. Flac от mp3 320 вслепую отличили все. Включая меня, а я не верил. Если прослушать подряд, это реально слышно. Полностью или частично пропадают тихие звуки в фоне, мелкие детали.

После HD 555 воткнули в плеер вторые Momentum через провод и дочь отличила ещё раз с этими ушами.

Sennheiser Momentum 2 Wireless: когда-то были беспроводными, но электроника сдохла после 3 лет использования.
Sennheiser Momentum 2 Wireless: когда-то были беспроводными, но электроника сдохла после 3 лет использования.

 Феноменально. Пожалуй, нужно переписать музыкальную коллекцию на flac/CD или даже SACD рипы, у меня ведь полно mp3. Наплевать на место, флешки сейчас ничего не стоят.

И, да, наверно это стыдно, но мне понравилась Тейлор Свифт.

* не будем грузить ребёнка герцами.

Let's block ads! (Why?)

[Перевод] Как быть билингвом в Data Science

В этой статье я хочу продемонстрировать R Markdown — удобную надстройку для программирования вашего проекта как на R, так и на Python, позволяющую программировать некоторые элементы вашего проекта на двух языках и управлять объектами, созданными на одном языке, с помощью другого языка. Это может быть полезно потому, что:
  1. Позволяет писать код на привычном языке, но при этом использовать функции, существующие только в другом языке.
  2. Позволяет напрямую сотрудничать с коллегой, который программирует на другом языке.
  3. Даёт возможность работать с двумя языками и со временем научиться свободно владеть ими.




Что нам понадобится


Для работы понадобятся эти компоненты:
  1. Конечно, R и Python.
  2. IDE RStudio (можно сделать это в других IDE, но в RStudio проще).
  3. Ваш любимый менеджер среды для Python (здесь я использую conda).
  4. Пакеты rmarkdown и reticulate, установленные в R.

При написании документов R Markdown мы будем работать в среде RStudio, но при этом перемещаться между фрагментами кода, написанными на R и на Python. Покажу пару простых примеров.

Настройка среды Python


Если вы знакомы с программированием на Python, то вы знаете, что любая выполняемая на Python работа, должна ссылаться на конкретную, содержащую все необходимые для работы пакеты среду. Есть много способов управления пакетами в Python, два самых популярных — virtualenv и conda. Здесь я предполагаю, что мы используем conda и что он установлен в качестве менеджера среды Python.
Вы можете использовать пакет reticulate в R для настройки окружений conda через командную строку R, если хотите (используя такие функции, как conda_create()), но как обычный программист Python я предпочитаю настраивать свои среды вручную.

Предположим, мы создаём среду conda с именем r_and_python и устанавливаем в неё pandas и statsmodels. Итак, команды в терминале:

conda create -name r_and_python
conda activate r_and_python
conda install pandas
conda install statsmodels

После установки pandas, statsmodels (и любых других пакетов, которые могут вам понадобиться) настройка среды завершена. Теперь запустите conda info в терминале и выберите путь к вашей среде. Он понадобится вам на следующем шаге.

Настройка вашего проекта R для работы с R и Python


Мы запустим проект R в RStudio, но хотим иметь возможность запускать Python в этом же проекте. Чтобы убедиться, что код Python работает нужной нам среде, необходимо установить системную переменную среды RETICULATE_PYTHON для исполняемого файла Python в этой среде. Это будет путь, который вы выбрали в предыдущем разделе, за которым следует /bin/python3.

Лучший способ обеспечить постоянную установку этой переменной в вашем проекте — создать в проекте текстовый файл с именем .Rprofile и добавить в него эту строку.

Sys.setenv(RETICULATE_PYTHON=”path_to_environment/bin/python3")

Замените pathtoenvironment на путь, который вы выбрали в предыдущем разделе. Сохраните файл .Rprofile и перезапустите сеанс R. Каждый раз, когда вы перезапускаете сеанс или проект, запускается .Rprofile, настраивающий вашу среду Python. Если вы хотите проверить это, вы можете запустить строку Sys.getenv («RETICULATE_PYTHON»).

Написание кода — первый пример


Теперь вы можете настроить в своём проекте документ R Markdown .Rmd и писать код на двух разных языках. Сначала нужно загрузить библиотеку reticulate в ваш первый фрагмент кода.
```{r}
library(reticulate)
```

Теперь, когда вы захотите написать код на Python, можно обернуть его обычными обратными кавычками, но пометить как фрагмент кода Python с помощью {python}, а когда захотите писать на R — воспользуйтесь {r}.

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

```{python}
import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smf
# obtain ugtests data
url = “http://peopleanalytics-regression-book.org/data/ugtests.csv"
ugtests = pd.read_csv(url)
# define model
model = smf.ols(formula = “Final ~ Yr3 + Yr2 + Yr1”, data = ugtests)
# fit model
fitted_model = model.fit()
# see results summary
model_summary = fitted_model.summary()
print(model_summary)
```

Это здорово, но, допустим, пришлось бросить работу из-за чего-то более срочного и передать ее своему коллеге, программисту на R. Вы надеялись, что сможете провести диагностику модели.

Не бойтесь. Можно получить доступ ко всем объектам python, которые вы создали в общем списке с названием py. Поэтому, если создается блок R внутри вашего документа R Markdown, коллеги получат доступ к параметрам вашей модели:

```{r}
py$fitted_model$params
```

или первые несколько остатков:

```{r}
py$fitted_model$resid[1:5]
```

Теперь можно легко выполнить некоторую диагностику модели, например построить график остатков вашей модели типа квантиль-квантиль:

```{r}
qqnorm(py$fitted_model$resid)
```

Написание кода — второй пример


Вы анализировали некоторые данные о быстрых знакомствах на Python и создали фрейм данных pandas со всеми данными в нём. Для простоты загрузим данные и посмотрим на них:
```{python}
import pandas as pd
url = “http://peopleanalytics-regression-book.org/data/speed_dating.csv"
speed_dating = pd.read_csv(url)
print(speed_dating.head())
```


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

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

И снова ничего не бойтесь, отправьте проект коллеге и он напишет решение на R.

```{r}
library(lme4)
speed_dating <- py$speed_dating
iid_intercept_model <- lme4:::glmer(dec ~ agediff + samerace + attr + intel + prob + (1 | iid),
 data = speed_dating,
 family = “binomial”)
coefficients <- coef(iid_intercept_model)$iid
```

Теперь вы можете получить код и посмотреть на коэффициенты. Также можно получить доступ к объектам R в Python внутри общего объекта r.
```{python}
coefs = r.coefficients
print(coefs.head())
```


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

Вы можете увидеть готовый документ R Markdown, созданный на основе интеграции языков — с фрагментами R и Python и объектами, перемещающимися между ними, — опубликованный здесь. Репозиторий Github с исходным кодом находится здесь.

Примеры данных в документе взяты из моего Справочника по моделированию регрессии в People Analytics.

image


Другие профессии и курсы
ПРОФЕССИИ


КУРСЫ

Let's block ads! (Why?)

Использование GitHub в обучении. Примеры. Часть III

Продолжу выкладывание примеров использования GitHub'а как инструмента обучения.


Предыдущий пример

Вариант командной работы с несколькими репозиториями

Расскажу про "самый приближённый" к реалиям вариант, когда в рамках реализации одной программы возникают подпроекты и над ними трудятся разные команды в разных репозиториях.

Примерный порядок действия

Часть действий повторяются из предыдущего примера

  • Создаёте аккаунт организации

  • Добавляете в него студентов.

  • Создаёте репозиторий. В README.md добавляете текст задания. Также наполняете репозиторий предварительно необходимым минимумом (нужными файлами для выполнения задания). Создаёте необходимые ветви. Обычно создаю ветвь dev или develop

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

  • По мере обсуждения решения выявляются подпроекты. Создаются команды под каждый подпроект. Для каждого подпроекта создаётся свой репозиторий с предварительным наполнением.

  • Команды выполняют задания, коммитят, пушат. Задания можно выдавать как через issues, так и какой-нибудь сервис с Kanban или Scrum

  • Создают запрос на слияние

  • Проверяете. Оставляете комментарии либо ко всему заданию целиком, либо к его отдельным частям.

  • Создаются релизы. Готовые DLL или ещё что берётся из релизов и подключается в основной проект.

  • В каждой команде ведётся техдокументация.

Плюсы и минусы

Плюсы:

  • Более приближенный к реальности вариант моделирования

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

  • Каждая команда работает над своим подпроектом

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

Минусы:

  • Нужно создавать отдельный аккаунт для организации

  • Нужно объяснить как работать с ветками и следить, чтобы пушили в нужную ветку.

  • Нужно объяснять что такое релиз, как происходит версионирование.

  • Нужно объяснять как пишется и для чего нужна техдокументация.

Какие можно внести дополнения: 

  • связать репозиторий с Kanban- или Scrum-сервисом, чтобы выдача заданий фиксировалась в карточках на досках

  • создавать не отдельные репозитории для каждого подпроекта, а использовать git submodules

Let's block ads! (Why?)