Widzę wiele razy w opisie pracy dla analityka danych proszącego o doświadczenie w Pythonie / Javie i nie zwracam uwagi na R. Poniżej znajduje się osobisty e-mail, który otrzymałem od głównego analityka danych firmy, o którą aplikowałem przez linkin.
X, dzięki za połączenie i wyrażenie zainteresowania. Masz dobre umiejętności analityczne. Jednak wszyscy nasi naukowcy danych muszą mieć dobre umiejętności programowania w języku Java / Python, ponieważ jesteśmy organizacją internetową / mobilną i wszystko, co robimy, jest online.
Chociaż szanuję decyzję głównego naukowca danych, nie jestem w stanie uzyskać jasnego obrazu tego, jakie zadania może wykonać Python, których R nie może wykonać. Czy ktoś może dbać o opracowanie? Tak naprawdę jestem chętny do nauki Python / Java, pod warunkiem, że otrzymam trochę więcej szczegółów.
Edycja: Znalazłem interesującą dyskusję na temat Quory. Dlaczego Python jest preferowanym językiem dla badaczy danych?
Edycja2: Blog Udacity na temat języków i bibliotek do uczenia maszynowego
źródło
Odpowiedzi:
Możesz więc zintegrować się z resztą bazy kodu. Wygląda na to, że Twoja firma używa mieszanki Java i Pythona. Co zrobisz, jeśli mały zakątek strony wymaga uczenia maszynowego; przekazać dane z bazą danych lub pamięcią podręczną, upuścić do R i tak dalej? Dlaczego nie zrobić tego wszystkiego w tym samym języku? Jest szybszy, czystszy i łatwiejszy w utrzymaniu.
Znasz jakieś firmy internetowe, które działają wyłącznie na R? Ani ja...
Wszystko, co mówiło, że Java jest ostatnim językiem, w którym bym analizował dane.
źródło
Przyczyn może być wiele:
Elastyczność siły roboczej: jednego programistę Java / Python można łatwo przenieść do innych zadań lub projektów.
Dostępność kandydatów: jest wielu programistów Java / Python. Nie chcesz wprowadzać nowego języka programowania, aby później dowiedzieć się, że nie ma wykwalifikowanych pracowników lub są po prostu zbyt drogie.
Integracja i ETL: Czasami uzyskanie danych o odpowiedniej jakości jest najtrudniejszą częścią projektu. Dlatego naturalne jest używanie tego samego języka, co w pozostałych systemach.
Definicja modelu biznesowego: większość reguł biznesowych i modeli biznesowych jest już napisana w tych językach.
Po prostu wszystko jest proste. Już teraz jest wystarczająco trudno być na bieżąco z technologiami. Zróżnicowana baza językowa może być chaotyczna. R za to, Ruby za to, Scala, Clojure, F #, Swift, Dart ... Mogą potrzebować różnych serwerów, różnych ścieżek, piekła do administrowania. Wszystkie mają własne IDE z narzędziami i wtyczkami (nie zawsze za darmo). Zobacz kilka uwag wuja Boba na temat wyboru języków i nowych technologii
Tak więc nawet jeśli masz 5–15% przewagę produktywności przy użyciu R dla konkretnego zadania, mogą preferować narzędzie, które po prostu wykonuje zadanie, nawet jeśli nie jest to najbardziej wydajne.
źródło
.csv
plików - do tego celu R jest właściwie najlepszym odpowiednim narzędziem na rynku. Dostępność kandydatów: że jest więcej programistów Java niż programistów R, nie oznacza, że musisz odrzucić kandydata R, jeśli go masz. Tak naprawdę nie ma znaczenia, w jaki sposób naukowiec wykonuje swoje ćwiczenia, o ile wdrażają czytelny kod, który może być uruchamiany przez niektóre serwery (lub jakąkolwiek inną rzecz, którą firma prowadzi).Zasadniczo prawdą jest, że w przypadku czysto analiz danych i ćwiczeń statystycznych R oferuje najlepsze i najszybsze (szczególnie przy użyciu
data.table
pakietu) narzędzia i metody, które w innym przypadku byłyby trudniejsze do wdrożenia w Pythonie (zakładam, że wszyscy mamy na myśli Pandy, chociaż ). Większość naukowców danych faktycznie używa R do wykonywania swoich modeli i obliczeń lub po prostu, aby zobaczyć, jak zachowują się dane.Po zakończeniu ćwiczenia nadszedł czas, aby udostępnić je reszcie osób, które będą musiały z niego skorzystać (tj. Wdrożyć); w tym celu często zaleca się przesyłanie kodu w języku Python z dwóch głównych powodów:
W związku z powyższym nadal prawdą jest, że można łatwo przetłumaczyć kod R na dowolny inny język, pod warunkiem, że dostępne są metody, biblioteki i pakiety (w Pythonie większość z nich jest, więc nie stanowi to żadnego problemu). Wiele infrastruktur i baz danych obsługuje podstawowy kod R, dlatego przenośność nie jest tak naprawdę problemem, zwłaszcza jeśli trzeba tylko przedstawić wyniki obliczeń (w tym zakresie nikt tak naprawdę nie widzi podstawowego kodu).
Java jest prawie bezużyteczna dla samej nauki o danych (chociaż Uniwersytet Stanforda posiada zbiór bibliotek NLP do uczenia maszynowego napisanych w Javie, o ile pamiętam - ale proszę sprawdzić). Jedynym powodem, dla którego może być wymagany, jest to, że reszta firmy używa go w dużym stopniu i nie chce go zastępować czymś nowym.
źródło
data.table
oferuje; scikit-learn, jak wspomniałeś, jest kolejnym przykładem, ale w zależności od rozpatrywanej sprawy jest o wiele więcej.Widziałem sporo firm korzystających z tytułu Data Scientist do ról typu „Data Engineer”. Szczególnie w przestrzeni dużych zbiorów danych.
Jeśli firma korzysta z Hadoop lub rozproszonego frameworka, takiego jak Spark, do analizy, Java, Python (lub prawdopodobnie Scala) byłyby językami, które byłyby najbardziej sensowne.
źródło
Jawa
Musiałbym się nie zgodzić z innymi plakatami na pytanie java. Istnieją pewne bazy danych noSQL (takie jak hadoop), które należy napisać w Mapva . Teraz możesz użyć programu HIVE, aby osiągnąć podobny wynik.
Pyton
Debata Python / R trwa. Oba są rozszerzalnymi językami, więc potencjalnie oba mogą mieć taką samą zdolność przetwarzania. Znam tylko R, a moja znajomość języka Python jest dość powierzchowna. Mówiąc jako właściciel małej firmy, nie chcesz mieć zbyt wielu narzędzi w swojej firmie, w przeciwnym razie wystąpi ogólny brak głębi i trudności z ich obsługą. Myślę, że sprowadzi się to do dogłębnej znajomości narzędzi w zespole. Jeśli zespół skupia się na pythonie, sensowne będzie zatrudnienie innego naukowca zajmującego się danymi w Pythonie, ponieważ może on zaangażować się w istniejącą bazę kodu i kod eksperymentu historycznego.
źródło
Przynajmniej dla mojego obecnego zespołu (ok. 80 naukowców i inżynierów danych) nie mamy takiej preferencji. Połowa badaczy danych używa R, a druga połowa używa Pythona. Wielu może kodować oba. Wdrażamy kod Python i R.
Nie sądzę, aby którykolwiek z naszych naukowców korzystał z języka Java. Jeśli muszą poradzić sobie z dużymi zbiorami danych, mogą użyć SparkSQL lub PySpark. Zespół inżynierii danych używa mieszanki Java / Scala / Python / Go.
Jeśli jesteś jedną z niewielu osób zajmujących się danymi w małej firmie, rozumiem, dlaczego wymagają pewnych umiejętności językowych, abyś mógł wykonywać zarówno analizy danych, jak i inżynierię. Ale myślę, że większość małych firm nie ma danych wystarczająco dużych, aby Python lub R nie poradziły sobie z produkcją.
źródło
Mój punkt widzenia jako programista ogólnego zastosowania z odrobiną doświadczenia w języku R: R jest doskonały do nauki danych, ale jest skierowany do osób ręcznie interpretujących dane. Jeśli chcesz użyć wyników do czegoś zautomatyzowanego, musisz połączyć się z czymś innym, a tego innego trudno będzie zrobić w języku specyficznym dla problemu, takim jak R. Czy możesz zrobić stronę internetową w języku R? :) Z drugiej strony, Python ma gotowe biblioteki do nauki danych i jest językiem programowania ogólnego przeznaczenia, który nie przeszkadza w pracy z nim. Jeśli chodzi o Javę, nadaje się do dużych projektów programistycznych z setkami tysięcy do milionów wierszy kodu. Jeśli część nauki danych musi się z tym połączyć, sensowne może być zrobienie wszystkiego w Javie.
Losowe skomlenie: Dlaczego muszę logować się do każdej witryny StackExchange osobno?
źródło
Narzędzia w Pythonie są po prostu lepsze niż społeczność R. Ther R. jest w stagnacji, podczas gdy społeczność Pythona rozwija się bardzo szybko. Zwłaszcza w narzędziach do nauki danych.
Również Python działa znacznie łatwiej ze wszystkim wokół. Możesz łatwo zeskrobać sieć, połączyć się z bazami danych i tak dalej. Dzięki temu prototypowanie jest naprawdę szybkie.
A jeśli masz działający prototyp i zależy Ci na jego przyspieszeniu lub integracji z przepływem pracy w firmie, zwykle jest on ponownie wdrażany w Javie.
R ma kilka fajnych narzędzi i wizualizacji, ale nie jest tak wspaniale budować w nim nowe rzeczy.
źródło