×Закрыть

Windows или Ubuntu для анализа данных на R и Python?

Хочу стать Data Analyst на R и Python.
Прошу совета опытных аналитиков и Data Scientistов.
На Windows вполне полноценно можно работать с данными в RStudio, Jupiter Notebook и других прогах?

С Убунтой постоянно какой-то головняк появляется. То Wi-Fi падает, то проводной интернет не работает. То не устанавливается что-то. Работаю на ноуте.

LinkedIn

Лучшие комментарии пропустить

OSX конечно. Какой ты ДС без макбука?

Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Не там копаєте.
Ставте анаконду на будь-якій ОСі, буде щастя. І тільки після конкретних проблем можна буде думати про іншу операційку.

Вот еще кейс в тему.
Создал я модель стохастического процесса, который мимикрируется под random walk.
letyourmoneygrow.com/...​alk-down-the-wall-street

Мне нужно было удостовериться, что (на не слишком больших выборках) статистические тесты «подделку» не распознают. В этом мог бы помочь R-пэкедж emh
www.turingfinance.com/...​market-hypothesis-with-r
Его нужно собирать из исходников с помощью devtools — что в Windows еще тот гемор — с ходу не пошло. Ну, я на сервер в линух (альтернативно мог бы в docker container, их в винде запускать тоже можно). Но и в линухе чего-то не пошло... ну в общем, я плюнул на эту поделку и нашел нужные мне тесты в других библиотеках :)

Не хвастовства ради, а токмо в рамках обмена опытом...
Обычно после установки интерпретатора я сразу устанавливаю Rtools и devtools. Как-то так сложилось, что большинство проектов я заворачиваю в пекедж ради удобства работы, задействования клавиатурных сокращений для прогона тестов, написания доков и т.д. Да, можно задействовать шаблоны проектов и т.д. Следовательно, devtools присутствует всегда. Сейчас попробовал установить emh на Винде 10 с R 3.5.2. Ругнулось на необновлённые пакеты, но отработало на ура.

Сейчас попробовал установить emh на Винде 10 с R 3.5.2

А у меня сейчас Microsoft’овский R. Они с одной стороны четко следят за порядком в версиях пактов (чего нет в CRAN’е), но с другой — когда нестандартная ситуация, то те же devtools могут оказаться несовместимыми.
Кстати, как emh — стоит того, чтоб повозиться с его установкой?

Я майкрософтовским Аром не пользовался. Предполагаю, что где-то так и есть. Microsoft улучшил, добавил, но нужно быть готовым к тому, что там не заработает что-то, что работет в ванильном R. Ну а CRAN чем-то напоминает debian testing ;) Можно годами работать без проблем, но если что — экранируем функции сами ;)

emh лично не пробовал, ничего не могу сказать. Хотя, помню, пару лет назад писал довольно большой проект по рандом-вокам. Ещё и умудрился реализовать его с разными подходами: R4, R5, R6... Тоже испёк пакет, но на CRAN предложить своё монстрообразное поделие постеснялся...

Кстати, со второй попытки (на другом компе) emh под винду-таки встал.
Только все равно ни хера не работает :)
> results <- is_random(S = zooloo,
+ a = 0.99, # To get a 99% confident result
+ freqs1 = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
+ freqs2 = c("Mon„, „Tue”, „Wed”, „Thu”, „Fri”, „Week”, „Month”))
|================================================================= | 59%Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) :
0 (non-NA) cases

Мне сразу бросились в глаза французские фигурные кавычки вместо прямых, но, наверное, это особенности вашего копи-паста, и в RStudio у вас используются прямые кавычки. Надеюсь, что прямые. Прогресс-бар прошёл 59% и остановился.
Я по-быстрому глянул функцию emh::is_random():
здесь применяется логарифмирование или похожее на него преобразование numeric-значений zoo-объекта, где мы получаем NaN-ы, из-за которых нам дальше выдаётся ошибка:
logrets <- as_logreturns(S)
В as_logreturns() завёрнута функция cAsLogReturns(), которая, в свою очередь задействует Rcpp.
Похоже, нужно либо разбираться глубже, либо бросить этот emh и использовать другой пакет.

В спешке писал. Разумеется, cAsLogReturns() задействует cpp-код через Rcpp. Вот он:

NumericVector cAsLogReturns(NumericVector levels, int order) {
  NumericVector logrets = levels * 0;
  for (int i = order; i < levels.size(); i++)
    logrets[i] = log(levels[i] / levels[i - order]);
  return(logrets);
}

Так правильно он тебе наны возвращает, если ты ему нули подаешь.

Да, по замыслу создателя пакета

logrets

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

Что там за замысел я не в курсе и про пакет тоже.
Но как из 0 и деления на 0 получить не наны или инфы я не знаю, кроме rand.

Там в выражении участвует вектор по-идее-ненулей levels и order. Я ж говорю, надо вникать, якщо знайдеться натхнення й час.

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

В математика ковариационная матрица всегда будет иметь некие не нулевые значения собственных значений. А вот при вычислении ты часто будешь получать их нулевыми. Причем это зависит и от того в каком формате у тебя матрица FP16, FP32, FP64 и т.п.
Посему нужно всегда оное это учитывать и придумывать разные пути от нормировок до регуляризующих величин.
А если у тебя логарифмы и вероятности, то тут уже на грани танцев с бубном всё.
В 100 случаях всё посчиталось, а в 101 нет.

Похоже, нужно либо разбираться глубже, либо бросить этот emh и использовать другой пакет.

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

это opensource во всей красе... ;)

Если речь идет только о Python / R, то без разницы, нормально работает и там и там.

А так, не надо забывать что BI специалисты очень часто работают с MS Office, например, и с Экселем в частности. Открывать странные Excel форматы в Убунте то еще удовольствие.

Плюс стандартные BI тулы, например Tableau, PowerBI, их на линуксе нет.

Какие хорошие вопросы Максим задает)))

Спасибо, Леша))
У меня был хороший учитель:))

В последние пару месяцев на пк и ноуте перепробовал почти все семейство ubuntu и к этому еще и manjaro. Итоговый вывод (имхо конечно же)- самый быстрый дистрибутив — manjaro (plasma), самый стабильный mint (cinnamon), самый красивый (и украшаемый) — Kubuntu (plasma). Но для хочу или нет, второй системой пришлось оставить windows10 , ибо world of tanks , на linux хоть и работает но теряет 2/3 производительности...

Подключайся к провайдеру Белтелеком. Он на некоторых пакетах танчики дарит.

Я бы посоветовала Ubuntu 16.04, она стабильнее остальных. Почему не советую windows — большинство пакетов/либ требует компиляции плюсового кода, в винде это ппц сложно, особенно начинающему юзеру, остается только брать wheels из интернета

Оба языка и их инструментарий отлично живут что на Винде, что на Линухе.
Я бы даже с WSL не заморачивался.

На Windows вполне полноценно можно работать с данными в RStudio, Jupiter Notebook и других прогах?

.
Да.

Остальное поймёте в процессе развития.

Здесь уже отписались по поводу docker и AWS, keras. Когда начнёте этим заниматься, поймёте, что пора запускать линукс: либо в отдельном разделе диска дуалбутом, либо через Virtualbox/Vmware, либо через WSL.

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

В Linux бывают некоторые моменты с установкой пакетов, когда install.package("packagename") заканчивается ошибкой, и вам нужно переходить в менеджер пакетов линукса и запускать apt-get install packagename. Пример: установка R-пакетов, которые задействуют Java, и просто присутствия JDK из официальных репозиториев или PPA, backports итд — недостаточно. Но это просто плюс несколько минут на поиск на Стековерфлоу, копипаст в консоль, запуск и повторный запуск install.package("packagename". Это не недостаток и не недоработка в LInux, просто особенности конкретной ОС. В MacOS тоже есть свои особенности и подходы, например, в способах установки R-интерпретатора.

То есть WSL будет достаточно для работы?

Для тебя сейчас и Винды и Мака и Линуха. Что тебе удобнее то и юзай.

Вы сами поймёте в процессе работы, когда его достаточно, а когда нет... ;)

Тільки Лінукс, можна і Мак

Бо вінда страшна як радянська влада, віруси, оновлення з перевантаженням коли заманеться, крякнуті програми, брррр.

Это у тех, кто не умеют ее готовить. С линухом ситуация такая-же. Кто не умеет его готовить, у тех всё плохо.

Но лично мне винда после win7 стала сильно неудобной для работы. Пересел на Линух, в нем мне удобнее сейчас. А вот если взять 98 год, то Винда была сильно удобнее Линуха тех времен для меня.

Згоден, за 20 років Лінукс сильно погарнішав!

Как по мне Линукс (дистры типа убунту) гораздо удобнее для разработки с использованием тулзов опенсорс из команд лайна. В винде нет ничего , даже Гита нет. В винде ты не можешь начать работу (и даже собрать проект с гитхаба) из коробки. Если тебе нужны джава, мейвен, груви, пайтон, гит, реакты с нодеджсами , и прочие тулзы , инсталляция машины займет целый день. В линуксе все сразу из коробки , либо ставится из репозиториев за минуты. В винде нужно посетить сайт каждого вендора, найти где там раздел даунлоад, скачать, запустить вручную инсталлер exe
или msi . При этом зависимости часто нужно скачивать отдельно. Например MySQL на винде требует .NET 4.x и Visual C++ redistributable и они не входят в пакет инсталляции. Иногда ещё переменные в PATH прописать. Поэтому долго, нудно и непродуктивно

Оно то так.
Но с другой стороны — тратишь 1-2 дня на установку этого всего и настройку, а потом работаешь со стабильной ОС.

Это Винда-то нынче стабильна? Хотя да — похожа на РБ по стабильности.

Ну я бы сказал, что вин10 достаточно стабильная, в сравнении с линуксами на десктопе/лептопе.
Что тут имелось ввиду под РБ?

Ну я бы сказал, что вин10 достаточно стабильная, в сравнении с линуксами на десктопе/лептопе.

помойте рот с мылом после таких слов

Откройте для себя пакетные менеджеры для Windows. Например chocolatey.

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

В винде они все кривы и пакетов там с гулькин нос.

не согласен) посмотри www.npackd.org — там и вполне понятный и удобный GUI, и прог не так уж мало присутствует ( www.npackd.org/p — указано 1183 пакетов). Конечно, это не Synaptic, но ИМХО вполне годно как для винды.

А як на рахунок Windows 10 linux subsystem? Працюю з віжуал студіо, гіт можна з айді юзати, а можна просто зайти в розділ під башем і все як на лінуксі. Поставив mysql, redis. Запустив їх із баша, і норм працює з ними ап що запущений в вінді.

Мне уже это неинтересно. Я в линухе обитаю.

Я просто здивований що мало хто про це знає, судячи з топіку. І пропонують віртуалки, другою системою.

Гемора с виртуалками меньше, если не нужно железо пробрасывать.

Плюсую) Мне вот, например, понравился www.npackd.org , но думаю и «шоколад» попробовать (походу для chocolatey даже GUI есть — github.com/chocolatey/ChocolateyGUI ) :-)

У самого ноут, на котором линукс работает через задницу. Нашёл прекрасный вариант — ставишь вин 10 pro, а там настраиваешь wsl. Сидишь под виндой, но используешь компилятор/интерпретатор с линукса. Более того, многие продукты JetBrains (clion и pycharm точно) поддерживают wsl из коробки.
С anaconda проблем ещё меньше. Он как веб сервер разворачивается. Запустил его в wsl, и на винде открываешь браузер с кодом.
По сравнению с виртуально машиной wsl намного шустрее и тратит меньше времени.
Единственное, нужно потратить время на первоначальную настройку, но это 1 раз.
По поводу R не знаю, не пользовался.

R прекрасно работает на всех 3-х основных осях. Питон тоже.

OSX конечно. Какой ты ДС без макбука?

Починайте опановувати хмарні сервіси...
Там все є...
І не залежить від техніки...

И бесплатно? Да?
А комп у тебя так или иначе локальный есть.

Ви не правильно мене зрозуміли))
Я мав на увазі не замість локального РС, а паралельно..
Так би мовити — на перспективу)

пс Щодо вартості, то на початковому етапі, це буде значно дешевше, ніж купувати потужну техніку «на виріст»
Тим більше, що я не зустрічав, щоб були якісь більш-менш серйозні проекти, що обробляють дані тільки локально... Я можу багато не знати))

А нужна она в локале в навырост? Обычно не нужна.
Для учебы можно и подождать, пока моделька обучится. Заодно и научишься понимать как модельки оптимизировать, базы ограничивать по размеру и т.п.

А для работы там уже или работодатель обеспечит железом, облаком, или сам обеспечишь себя из прибыли.

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

Ставь Убунту в виртуалбокс и запускай в винде.

Ребят, спасибо всем за рекомендации)
Сейчас планирую на Винде продолжить проходить онлайн-курсы по анализу данных на R и на Pythone, поизучать их библиотеки.
А потом наверное поставлю Убунту второй системой, как и было раньше, до неудачной попытки обновления 18.04 до 18.10.

Сейчас планирую на Винде продолжить проходить онлайн-курсы по анализу данных на R и на Pythone, поизучать их библиотеки.

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

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

В ML многие гоняться за новинками (и это необходимо), а многие наоборот. И может оказаться, что вот этот инструмент лучше работает в сборке для 18 бубунты, а вот тот для 16.
Так что этот совет не очень. Когда ТС разберется с теорией и инструментами уже сможет осознано выбирать.

Это я тебе скажу как мастер портирования и сложных билдов. В 18 очень сильно перекопали дерево пакетов по сравнению с предыдущими версиями и очень многие вещи перестали после собираться или нормально работать.

Да. Но в ML и DS есть еще свои особенности. Очень многое нужное собирается на ура в 18, а в 16 с бубном.

Ставь Linux Mint Cinnamon — він більш зручний для користувача Windows, ніж Ubuntu.

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

Так, це може бути. До речі, є докер з OpenVINO — так що можна його використовувати.

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

Пофиг. На чем нравится, на том и работай. Ни R, ни Питон в прод не пойдут, а если не для прода, то юзай то, что тебе удобнее.
Винда или линух тоже пофиг. Что тебе нравится, то и юзай.

Проды обычно уже на плюсах и в линухе.

Думаю, зависит от домена, потому как я работала в нескольких DS компаниях и на плюсах никто не писал — что на питоне сделали, то и в проде. Насчет линукса — да, на винде слишком много танцев с бубном.

Тут еще такой момент. Это были не проды, а прототипы, хотя ты могла считать и продом.
У питона есть врожденная проблема — отсутсвие многопоточности.

Более того реальных продов с ML и DS в мире можно насчитать по пальцам, остальное — это отрабатывания бабок от инвесторов.
Но так будет не всегда. Сейчас толпа игроков разного размера на этом рынке и 99% это прототипы. Через несколько лет часть из этого таки пойдет в прод и будет переписано на С с оптимизацией (ибо железо таки дорогое).

Можно примеры реальных продов? Потому как я продом считаю продукт, который уже задеплоен и приносит деньги компании + пользу заказчику. Переписывать это все на С тупо некому, тк не так и много девов, которые пишут на С и понимают при этом в DS, а основная масса пишет все же на питоне, который прост и понятен + кучи либ, которые может использовать рядовой дата саентист.
Многопоточность — да, это боль в питоне, чаще решается большим количеством машин (docker, kubernetes, etc)

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

А то и на Verilog/VHDL с вынесением в специализированный чип, если рассматривать портативные решения. См. Apple Neural Engine, Huawei Kirin. Ибо из химических источников тока уже выжали все, что можно было выжать, а термоядерных батареек на прилавках пока не видно :)

Не все, но там запаса осталось не более чем в 2-3 раза емкость на вес, объем. И эти 2-3 раза будут еще 50 лет делать.
А со вычислительным железом уже тоже тупик почти. Частоты достигли предела, плотность транзисторов тоже. Пока еще не отработан путь с большим количеством ядер, но с современной архитектурой там уже тоже к пределу приближаются.
Так что в ближайшие года приостановятся с придумыванием новых более сложных подходов и будут вылизывать текущие. А это острая потребность в С (и иногда С++).

Открою секрет Полишинеля: Data Science (настоящая, а не тупой перебор моделей) начинается с карандаша и бумаги.

А это

С Убунтой постоянно какой-то головняк появляется. То Wi-Fi падает, то проводной интернет не работает.

результат отсутствия админских навыков — что само по себе не грех (нельзя быть спецом во всем), но к Data Science совершенно ортогонально.

Да, по личному опыту мне только пару раз требовался именно Линух, а именно:
1. Когда одно время библиотеку biwavelet cran.r-project.org/...​ages/biwavelet/index.html выкинули из CRAN’а; в Линухе она из исходников собиралась на раз-два-три, а в винде — нет.
2. Когда на R пишется скрипт, который потом будет запакован в Docker в виде сервиса.

Открою секрет Полишинеля: Data Science (настоящая, а не тупой перебор моделей) начинается с карандаша и бумаги.

а програмування з дошки і вайтбоард маркера

Настоящего программирования — да. Формошлепства — нет.
«Формошлепство» есть везде (в DS это тупой перебор моделей), но в DS оно куда реже приносит пользу (хотя, пожалуй, не менее востребовано чем в программировании).

але все рівно все це приземлюється на якусь модель обчислень: тензорфлоу, куда, єт еназа байк ім. Адамара, етц

В продуктиве — да (хотя я бы назвал TF и CUDA не моделью вычислений, а техническими инструментами).
Только что толку распараллеливать модель на той же КУДе, если она по сути своей неверная?! :) А вот чтоб она была верная — тут приходится порой поработать карандашом на бумаге.

ок, ...приземлюється на один з технічних інструментів, кожен зі своєю моделлю обчислень, бо для різних проблем на різних інструментах кожен такт буде по-різному наближати до рішення.

хоча буває і так що на папері все дуже красиво:

знайти всі такі x: f(x) = x

а у камені: що паралель, що не паралель :(

TF не модель, а движок. Их еще пачка есть и многие другие не хуже. Но для обучающегося TF удобнее. Под нее много мануалов.

TF не модель, а движок.

з обмеженням всієї внутрішньої кухні операціями над int8 (*upd: чи int16?), коли не помиляюся :)

Еще улыбает, что в головах у многих Data Science тождественно Deep learning.

Не, даже чаще TensorFlow из Питона и всё.

Можно, но, например, Шолее в книге "Глубокое обучение на Python, например, не рекомендует. Его цитата:

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

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

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

Лично мне удобнее в линухе — меньше гемора со сборкой нужных либ.

Подписаться на комментарии