Właśnie zaczynam opracowywać aplikację do uczenia maszynowego do celów akademickich. Obecnie używam R i trenuję się w tym. Jednak w wielu miejscach widziałem ludzi używających Pythona .
Z czego korzystają ludzie w środowisku akademickim i przemyśle i jakie jest zalecenie?
machine-learning
r
python
Peter Mortensen
źródło
źródło
Odpowiedzi:
Kilka naprawdę ważnych różnic, które należy wziąć pod uwagę, wybierając R lub Python między sobą:
Oba języki są jednakowo dobre. Dlatego w zależności od domeny i miejsca pracy musisz mądrze wybrać odpowiedni język. Świat technologii zwykle woli używać jednego języka. Użytkownicy biznesowi (analityka marketingowa, analityka detaliczna) zazwyczaj korzystają ze statystycznych języków programowania, takich jak R, ponieważ często wykonują szybkie prototypowanie i budują wizualizacje (co jest szybsze w języku R niż Python).
źródło
Nie ma to jak „python jest lepszy” lub „R jest znacznie lepszy niż x”.
Jedyny fakt, jaki znam, to to, że w branży przydziały ludzi trzymają się pytona, ponieważ tego nauczyli się na uniwersytecie. Społeczność python jest naprawdę aktywna i ma kilka świetnych struktur do ML i eksploracji danych itp.
Ale szczerze mówiąc, jeśli masz dobrego programistę c, może on robić to samo, co ludzie w Pythonie lub r, jeśli masz dobrego programistę Java, może on także robić (prawie) wszystko w Javie.
Trzymaj się więc języka, w którym czujesz się komfortowo.
źródło
Kilka dodatkowych myśli.
Język programowania „per se” jest tylko narzędziem. Wszystkie języki zostały zaprojektowane tak, aby niektóre typy konstrukcji były łatwiejsze do zbudowania niż inne. A znajomość i opanowanie języka programowania jest ważniejsza i bardziej efektywna niż cechy tego języka w porównaniu do innych.
O ile widzę, istnieją dwa wymiary tego pytania. Pierwszym wymiarem jest zdolność do eksploracji, budowania dowodu koncepcji lub modeli w szybkim tempie, w końcu posiadanie wystarczającej ilości narzędzi do badania tego, co się dzieje (takich jak testy statystyczne, grafika, narzędzia pomiarowe itp.). Ten rodzaj aktywności jest zwykle preferowany przez badaczy i badaczy danych (zawsze zastanawiam się, co to znaczy, ale używam tego terminu do jego luźnej definicji). Zwykle polegają na dobrze znanych i zweryfikowanych instrumentach, które można wykorzystać do przedstawienia dowodów lub argumentów.
Drugi wymiar to możliwość rozszerzenia, zmiany, ulepszenia, a nawet tworzenia narzędzi, algorytmów lub modeli. Aby to osiągnąć, potrzebujesz odpowiedniego języka programowania. Z grubsza wszystkie są takie same. Jeśli pracujesz dla firmy, zależy to w dużej mierze od infrastruktury firmy, kultury wewnętrznej i twoich wyborów znacznie się zmniejsza. Ponadto, jeśli chcesz zaimplementować algorytm do użytku produkcyjnego, musisz zaufać implementacji. A wdrożenie w innym języku, którego nie znasz, nie pomoże ci zbytnio.
Dla pierwszego rodzaju działalności preferuję ekosystem R. Masz świetną społeczność, ogromny zestaw narzędzi, dowody, że narzędzia te działają zgodnie z oczekiwaniami. Można również rozważyć Python, Octave (aby wymienić tylko kilka), którzy są wiarygodnymi kandydatami.
Przy drugim zadaniu musisz wcześniej pomyśleć o tym, czego naprawdę chcesz. Jeśli potrzebujesz solidnych narzędzi gotowych do produkcji, C / C ++, Java, C # są świetnymi kandydatami. Uważam Pythona za drugiego obywatela w tej kategorii, razem ze Scalą i przyjaciółmi. Nie chcę rozpętać wojny z płomieniami, to tylko moja opinia. Ale po ponad 17 latach pracy jako programisty wolę ścisłą umowę i moją wiedzę niż swobodę robienia czegokolwiek, o czym myślisz (na przykład w przypadku wielu dynamicznych języków).
Osobiście chcę się nauczyć jak najwięcej. Zdecydowałem, że muszę wybrać trudny sposób, co oznacza, że wszystko muszę realizować od zera. Używam R jako modelu i inspiracji. Ma wielkie skarby w bibliotekach i wiele destylowanych doświadczeń. Jednak R jako język programowania jest dla mnie koszmarem. Postanowiłem więc korzystać z Javy i nie używać żadnej dodatkowej biblioteki. Wynika to tylko z mojego doświadczenia i nic więcej.
Jeśli masz czas, najlepszą rzeczą, jaką możesz zrobić, to spędzić trochę czasu z tymi wszystkimi rzeczami. W ten sposób zdobędziesz najlepszą możliwą odpowiedź, dopasowaną do Ciebie. Dijkstra powiedział kiedyś, że narzędzia wpływają na twój sposób myślenia, dlatego dobrze jest znać swoje narzędzia, zanim pozwolą im modelować twój sposób myślenia. Możesz przeczytać więcej na ten temat w jego słynnym artykule zatytułowanym The Humble Programmer
źródło
Dodałbym do tego, co dotychczas powiedzieli inni. Nie ma jednej odpowiedzi, że jeden język jest lepszy od drugiego.
Powiedziawszy to, R ma lepszą społeczność do eksploracji danych i uczenia się. Ma szerokie możliwości wizualizacji. Z drugiej strony Python stał się lepszy w przetwarzaniu danych od czasu wprowadzenia pand. Czas nauki i rozwoju jest znacznie krótszy w Pythonie, w porównaniu do R (R jest językiem niskiego poziomu).
Myślę, że ostatecznie sprowadza się to do ekosystemu, w którym się znajdujesz i osobistych preferencji. Aby uzyskać więcej informacji, możesz obejrzeć to porównanie tutaj .
źródło
Nie ma srebrnego języka, w którym można rozwiązać każdy problem związany z danymi. Wybór języka zależy od kontekstu problemu, wielkości danych i jeśli pracujesz w miejscu pracy, musisz trzymać się tego, czego używają.
Osobiście używam R częściej niż Python ze względu na biblioteki wizualizacji i interaktywny styl. Ale jeśli potrzebuję większej wydajności lub kodu strukturalnego, zdecydowanie używam Pythona, ponieważ ma on jedne z najlepszych bibliotek takich jak SciKit-Learn, numpy, scipy itp. Używam zarówno R, jak i Pythona w moich projektach zamiennie.
Jeśli więc zaczynasz pracę nad nauką danych, proponuję nauczyć się obu. Nie jest to trudne, ponieważ Python zapewnia również interfejs podobny do R z Pandas .
Jeśli masz do czynienia ze znacznie większymi zestawami danych, nie możesz uciec od ekosystemów zbudowanych w Javie (Hadoop, Pig, Hbase itp.).
źródło
Nie ma „lepszego” języka. Próbowałem obu z nich i czuję się dobrze z Pythonem, więc pracuję tylko z Pythonem. Chociaż wciąż się uczę, ale do tej pory nie spotkałem się z żadną przeszkodą w Pythonie. Zaletą Pythona jest to, że społeczność jest zbyt dobra i łatwo można uzyskać dużą pomoc w Internecie. Poza tym powiedziałbym, że idź w języku, który lubisz, a nie tym, który ludzie polecają.
źródło
Z mojego doświadczenia wynika, że odpowiedź zależy od danego projektu. Dla czystych badań wolę R z dwóch powodów: 1) szerokiej gamy bibliotek i 2) znacznej części literatury naukowej zawiera próbki R.
Jeśli projekt wymaga interaktywnego interfejsu do użycia przez laików, uważam, że R jest zbyt ograniczony. Błyszczący to świetny początek, ale nie jest jeszcze wystarczająco elastyczny. W takich przypadkach zacznę patrzeć na przeniesienie mojej pracy R do Pythona lub js.
źródło
Problemem, którego nie udało się rozwiązać w przypadku innych odpowiedzi, jest licencjonowanie .
Większość wyżej wymienionych wspaniałych bibliotek R to GPL (np. Ggplot2 , data.table ). To zapobiega z dystrybucją oprogramowania w zastrzeżonej formie.
Chociaż wiele zastosowań tych bibliotek nie oznacza dystrybucji oprogramowania (np. Do trenowania modeli offline), GPL może sama w sobie zniechęcić firmy do korzystania z nich. Przynajmniej z mojego doświadczenia.
Z drugiej strony w dziedzinie python większość bibliotek ma przyjazne dla biznesu licencje dystrybucyjne, takie jak BSD lub MIT.
W środowisku akademickim kwestie licencyjne zwykle nie są problemami.
źródło
Niewiele do dodania do podanych komentarzy. Jedyną rzeczą może być ta infografika porównująca R vs Python do celów analizy danych http://blog.datacamp.com/r-or-python-for-data-analysis/
źródło
Jednym z prawdziwych wyzwań, z którym miałem do czynienia w R, są różne pakiety kompatybilne z różnymi wersjami .. całkiem sporo pakietów R nie jest dostępnych dla najnowszej wersji R .. A R całkiem sporo czasu daje błąd ze względu na bibliotekę lub pakiet został napisany dla starszych wersja..
źródło
Nie próbowałem R (cóż, trochę, ale nie wystarczająco, aby zrobić dobre porównanie). Oto jednak niektóre z mocnych stron Pythona:
element in a_list
,for element in sequence
,matrix_a * matrix_b
(dla mnożenia macierzy), ...źródło
Wolę Python niż R, ponieważ Python jest kompletnym językiem programowania, dzięki czemu mogę wykonywać zadania uczenia maszynowego od końca do końca, takie jak zbieranie danych za pomocą serwera HTTP napisanego w Pythonie, wykonywanie zaawansowanych zadań ML, a następnie publikowanie wyników online. Wszystko to można zrobić w Pythonie. Naprawdę uważam, że R jest trudniejszy do nauczenia, a korzyści z nauki Pythona są znacznie większe, ponieważ można go używać do prawie każdego zadania programistycznego.
źródło
R: R jest odpowiednikiem Open Source. który tradycyjnie był wykorzystywany w środowisku akademickim i badawczym. Ze względu na charakter open source najnowsze techniki są szybko uwalniane. W Internecie dostępnych jest wiele dokumentacji i jest to bardzo opłacalna opcja. Python: Z początku jako język skryptowy typu open source, użycie Pythona z czasem wzrosło. Dzisiaj, to biblioteki sportowe (numpy, scipy i matplotlib) i funkcje dla prawie każdej operacji statystycznej / budowy modelu, którą możesz chcieć zrobić. Od czasu wprowadzenia pand stała się bardzo silna w operacjach na danych strukturalnych.
Kod Python
Importuj bibliotekę
Importuj inne niezbędne biblioteki, takie jak pandy, numpy ...
z sklearn import linear_model
Ładowanie zestawów danych dotyczących pociągu i testu
Zidentyfikuj zmienne funkcyjne i odpowiedzi oraz wartości muszą być tablicami liczbowymi i liczbowymi
x_train = zmienne_wejściowe_wartości_treningowe y_train = zmienne_wartościowe_wartości_training_datasets x_test = zmienne_wejściowe_valase_test_datasets
Utwórz obiekt regresji liniowej
linear = linear_model.LinearRegression ()
Wytrenuj model przy użyciu zestawów treningowych i sprawdź wynik
linear.fit (x_train, y_train) linear.score (x_train, y_train)
Współczynnik równania i punkt przecięcia
print („Współczynnik: \ n”, linear.coef_) print („Intercept: \ n”, linear.intercept_)
Prognozuj wyjście
przewidywane = linear.predict (x_test) R Kod
Ładowanie zestawów danych dotyczących pociągu i testu
Zidentyfikuj zmienne funkcyjne i odpowiedzi oraz wartości muszą być tablicami liczbowymi i liczbowymi
x_train <- wartości zmiennych wejściowych
Wytrenuj model przy użyciu zestawów treningowych i sprawdź wynik
liniowe <- lm (y_train ~., data = x) podsumowanie (liniowe)
Prognozuj wyjście
przewidywane = przewidywane (liniowe, x_test)
źródło
Nie sądzę, że Python ma GUI typu point-click, które zamieniają go w SPSS i SAS. Zabawa z nimi jest naprawdę fajna.
źródło
Mam ten obraz w poście z linkiem. Ilekroć mam wątpliwości co do używania Pythona lub R, zaglądam do niego i okazuje się to bardzo przydatne.
źródło