Я часто вижу в описании работы для специалиста по данным, спрашивающего опыт работы с Python / Java, и не обращаю внимания на R. Ниже приведено личное письмо, которое я получил от главного специалиста по данным компании, в которую я обратился через linkedin.
X, спасибо за подключение и проявление интереса. У вас есть хорошие навыки аналитики. Тем не менее, все наши специалисты по данным должны обладать хорошими навыками программирования на Java / Python, так как мы являемся интернет / мобильной организацией, и все, что мы делаем, - это онлайн.
Хотя я уважаю решение главного исследователя данных, я не могу получить четкое представление о том, какие задачи может выполнять Python, а R - нет. Кто-нибудь может разработать? Я действительно заинтересован в изучении Python / Java, если получу немного больше подробностей.
Изменить: я нашел интересную дискуссию по Quora. Почему Python является языком выбора для ученых данных?
Edit2: блог от Udacity по языкам и библиотекам для машинного обучения
источник
Ответы:
Таким образом, вы можете интегрировать с остальной частью кода базы. Кажется, ваша компания использует смесь Java и Python. Что вы будете делать, если маленький уголок сайта нуждается в машинном обучении; передать данные с помощью базы данных или кэша, перейти к R и т. д.? Почему бы просто не сделать все это на одном языке? Это быстрее, чище и проще в обслуживании.
Знаете какие-нибудь онлайн-компании, которые работают исключительно на R? И я нет...
Все, что говорит, что Java - последний язык, на котором я делаю науку о данных.
источник
Там может быть много причин, таких как:
Гибкость рабочей силы: программисты на Java / Python могут быть легко перемещены к другим задачам или проектам.
Доступность кандидатов: есть много программистов на Java / Python. Вы не хотите вводить новый язык программирования, чтобы потом выяснить, что нет квалифицированных рабочих или они просто слишком дороги.
Интеграция и ETL. Иногда получение данных с надлежащим качеством является самой сложной частью проекта. Поэтому естественно использовать тот же язык, что и остальные системы.
Определение бизнес-модели: большинство бизнес-правил и бизнес-моделей уже написаны на этих языках.
Просто все упростить. Уже достаточно сложно быть в курсе технологий. Разнообразная база языка может быть хаотичной. R для этого, Ruby для этого, Scala, Clojure, F #, Swift, Dart ... Им могут понадобиться разные серверы, разные пути, ад для администрирования. У всех есть свои IDE с инструментами и плагинами (не всегда бесплатно). Посмотрите некоторые замечания дяди Боба о выборе языков и новых технологиях
Поэтому, даже если у вас есть преимущество в производительности на 5–15% при использовании R для конкретной задачи, они могут предпочесть инструмент, который просто выполняет свою работу, даже если не самым эффективным способом.
источник
.csv
файлов, и для этой цели R является фактически наиболее подходящим инструментом на рынке. Доступность кандидатов: то, что Java-программистов больше, чем R-программистов, не означает, что вы должны отказаться от R-кандидата, если он у вас есть. На самом деле не имеет значения, как ученый выполняет свои упражнения, если они развертывают читаемый код, который может запускаться некоторыми серверами (или любой другой вещью, которую выполняет компания).В целом верно, что для чисто научных данных и статистических упражнений R предлагает лучшие и самые быстрые (особенно при использовании
data.table
пакета) инструменты и методы, которые в противном случае было бы тяжелее реализовать в Python (я предполагаю, что под Python мы все имеем в виду Pandas, хотя ). Большинство исследователей данных действительно используют R для выполнения своих моделей и расчетов или просто для того, чтобы посмотреть, как ведут себя данные.Как только упражнение завершено, настало время сделать его доступным для остальных людей, которые должны его использовать (т.е. развернуть); для этой цели часто предпочтительнее представить код на Python по двум основным причинам:
Выше сказанное, все еще верно, что можно легко перевести R-код на любой другой язык, при условии, что методы, библиотеки и пакеты доступны (в Python большинство из них есть, так что это не проблема). Множество инфраструктур и баз данных поддерживают лежащий в основе R-код, поэтому переносимость на самом деле не является проблемой, особенно если нужно просто представить результаты вычислений (в этом смысле никто не видит базовый код в любом случае).
Ява практически не пригодна для самой науки о чистых данных (хотя, насколько я помню, в Стэнфордском университете есть коллекция библиотек NLP машинного обучения, написанных на Java, но, пожалуйста, проверьте). Единственная причина, по которой это может потребоваться, заключается в том, что остальная часть компании использует его в больших масштабах, и они не хотят заменять его чем-то новым.
источник
data.table
предлагает; scikit-learn, как вы упомянули, является еще одним примером, но в зависимости от конкретного случая есть еще много.Я видел довольно много компаний, использующих название Data Scientist для ролей типа «Инженер данных». Особенно в большом пространстве данных.
Если компания использует Hadoop или распределенную инфраструктуру, такую как Spark, для анализа в Java, то Python (или, возможно, Scala) будет наиболее подходящим языком.
источник
Ява
Я бы не согласился с другими постерами по вопросу о Java. Существуют определенные базы данных noSQL (например, hadoop), которые нужны для написания заданий mapreduce в Java . Теперь вы можете использовать HIVE для достижения практически того же результата.
питон
Обсуждение Python / R продолжается. Оба являются расширяемыми языками, поэтому потенциально оба могут иметь одинаковую способность к обработке. Я знаю только R, и мои знания Python довольно поверхностны. Говоря как владелец малого бизнеса, вы хотите, чтобы в вашем бизнесе не было слишком много инструментов, в противном случае у них будет общая нехватка глубины и трудности с их поддержкой. Я думаю, что это доходит до глубины инструментальных знаний в команде. Если команда сконцентрирована на python, то имеет смысл нанять другого ученого, изучающего данные на python, так как он может взаимодействовать с существующей кодовой базой и историческим экспериментальным кодом.
источник
По крайней мере, для моей нынешней команды (~ 80 ученых и инженеров) у нас нет таких предпочтений. Половина исследователей данных использует R, а другая половина - Python. Многие могут кодировать в обоих. Мы внедряем код Python и R в производство.
Я не думаю, что кто-либо из наших исследователей данных использует Java вообще. Если им нужно работать с большими данными, они могут использовать SparkSQL или PySpark. Команда разработчиков данных использует смесь Java / Scala / Python / Go.
Если вы один из немногих специалистов в области данных в небольшой компании, я могу понять, почему им требуются определенные языковые навыки, чтобы вы могли заниматься как наукой о данных, так и проектированием. Но я думаю, что у большинства небольших компаний не будет достаточно больших данных, которые Python или R не смогут обработать в процессе производства.
источник
Моя точка зрения программиста общего назначения с небольшим опытом работы с R: R отлично подходит для науки о данных, но он ориентирован на людей, которые интерпретируют данные вручную. Если вы хотите использовать результаты для чего-то автоматизированного, вам нужно взаимодействовать с чем-то другим, и что-то еще будет трудно сделать на языке, специфичном для проблемы, например R. Можете ли вы создать веб-сайт на R? :) С другой стороны, Python имеет готовые библиотеки для обработки данных и является языком программирования общего назначения, который не мешает вам делать с ним что-то еще. Что касается Java, то это хорошо для больших программных проектов с сотнями тысяч до миллионов строк кода. Если часть науки о данных должна взаимодействовать с этим, тогда может иметь смысл сделать все на Java.
Случайное нытье: Почему я должен входить на каждый сайт StackExchange отдельно?
источник
Инструменты в Python лучше, чем в R. Сообщество R довольно застойное, а сообщество Python развивается очень быстро. Особенно в инструментах для Data Science.
Также Python работает намного проще со всем вокруг. Вы можете легко поковыряться в сети, подключаться к базам данных и так далее. Это делает прототипирование действительно быстрым.
И если у вас есть работающий прототип и вы хотите ускорить его или интегрировать в рабочий процесс компании, он обычно реализуется в Java.
У R есть несколько аккуратных инструментов и визуализаций, но это не так здорово, чтобы создавать новые вещи в нем.
источник