기계 학습을위한 Python vs R


101

학문적 목적으로 기계 학습 응용 프로그램 을 개발하기 시작했습니다 . 나는 현재 R을 사용 하고 있으며 스스로 훈련하고 있습니다. 그러나 많은 곳에서 사람들이 Python을 사용하는 것을 보았습니다 .

사람들은 학계와 산업에서 무엇을 사용하며 권장 사항은 무엇입니까?


3
글쎄, 어떤 유형 의 머신 러닝 (이미지 / 비디오? NLP? 금융? 천문학?), 어떤 분류기, 어떤 크기의 데이터 세트 (Mb? Gb? Tb?), 어떤 규모, 어떤 대기 시간, 어떤 플랫폼 (모바일 / 단일 컴퓨터) / multicore / cluster / cloud) ...? 응용 프로그램에서 어떤 특정 라이브러리를 사용 / 필요하며 각 언어로 제공되는 라이브러리를 확인하셨습니까? 당신은 당신의 개인 학습을위한 장난감 응용 프로그램을 구축하고 있습니까? 오픈 소스 또는 독점을 사용하십니까? 다른 사람이나 기존 앱과 함께 작업 할 예정입니까? 웹 프론트 엔드 / GUI? etc
smci

1
한 가지 관찰은 파이썬은 큰 데이터 세트를 사용하는 기계 학습 사람들이 더 많이 사용하는 반면 R은 수백 개의 데이터 포인트로 심리학 실험을하는 사람들과 같이 전통적인 "통계 학자"가 더 많이 사용한다는 것입니다. 그 차이는 줄어들고 있지만.
xji

파이썬 맨 맨! 나는 동료들이 하루에 4 배나하는 일을합니다. 또한 머신 러닝뿐만 아니라 모든 종류의 프로그래밍 작업에 파이썬을 사용할 수 있습니다.
Francesco Pegoraro

답변:


91

R 또는 Python 을 서로 선택할 때 고려해야 할 몇 가지 중요한 차이점은 다음과 같습니다.

  • 기계 학습 에는 2 단계가 있습니다. 모델 구축 및 예측 단계. 일반적으로 모델 구축은 배치 프로세스로 수행되며 예측은 실시간으로 수행됩니다 . 모델 구축 프로세스는 계산 집약적 인 프로세스이며 예측은 순식간에 발생합니다. 따라서 Python 또는 R의 알고리즘 성능은 실제로 사용자의 처리 시간에 영향을 미치지 않습니다. 파이썬 1, R 1
  • 생산 : Python과 R의 실제 차이점은 생산 준비가 된 것입니다. 파이썬은 본격적인 프로그래밍 언어이므로 많은 조직에서 프로덕션 시스템에서 사용합니다. R은 많은 학계에서 선호하는 통계 프로그래밍 소프트웨어이며 데이터 과학의 증가와 라이브러리의 가용성 및 오픈 소스로 인해 업계는 R을 사용하기 시작했습니다. 이러한 조직 중 다수는 Java, C ++, C #, Python 등. 이상적으로 는 대기 시간 및 유지 관리 문제를 줄이기 위해 동일한 언어로 예측 시스템 을 갖기를 원합니다 . 파이썬 2, R 1
  • 라이브러리 : 두 언어 모두 엄청나고 안정적인 라이브러리를 가지고 있습니다. R에는 많은 도메인에 서비스를 제공하는 5000 개가 넘는 라이브러리가 있으며 Python에는 Pandas, NumPy, SciPy, Scikit Learn, Matplotlib 같은 놀라운 패키지가 있습니다. 파이썬 3, R 2.
  • 개발 : 두 언어 모두 통역 언어입니다. 많은 사람들은 파이썬이 배우기 쉽다고 말하지만, 영어를 읽는 것과 비슷하지만 (약간의 메모를 적기 위해) R은 더 많은 초기 연구 노력이 필요합니다. 또한 둘 다 좋은 IDE (Python의 경우 Spyder 및 R의 경우 RStudio)가 있습니다. 파이썬 4, R 2.
  • 속도 : R 소프트웨어는 초기에 큰 계산에 문제가있었습니다 (예 : nxn 행렬 곱셈). 그러나이 문제는 Revolution Analytics에서 R을 도입하여 해결됩니다. 그들은 C에서 계산 집약적 인 연산을 재 작성했으며 엄청나게 빠릅니다. 파이썬은 고급 언어이므로 상대적으로 느립니다. 파이썬 4, R 3.
  • 시각화 : 데이터 과학에서 우리는 종종 사용자에게 패턴을 보여주기 위해 데이터를 플롯하는 경향이 있습니다. 따라서 시각화는 소프트웨어 선택에서 중요한 기준이되며 R은 이와 관련하여 Python을 완전히 죽입니다. 놀라운 ggplot2 패키지에 대한 Hadley Wickham에게 감사드립니다. R이 손을 win습니다. 파이썬 4, R 4.
  • 빅 데이터 다루기 : R의 제약 조건 중 하나는 데이터를 시스템 메모리 (RAM)에 저장한다는 것입니다. 따라서 빅 데이터를 처리 할 때 RAM 용량이 제한됩니다. 파이썬은 잘하지만 R과 Python 모두 HDFS 커넥터를 가지고 있기 때문에 Hadoop 인프라를 활용하면 성능이 크게 향상됩니다. 파이썬 5, R 5.

따라서 두 언어 모두 똑같이 좋습니다. 따라서 도메인과 작업 장소에 따라 올바른 언어를 현명하게 선택해야합니다. 기술 세계는 일반적으로 단일 언어를 선호합니다. 비즈니스 사용자 (마케팅 분석, 소매 분석)는 대개 빠른 프로토 타이핑을 수행하고 시각화를 구축하기 때문에 R과 같은 통계 프로그래밍 언어를 사용합니다 (파이썬보다 R에서 더 빠름).


15
R은 시각화에서 파이썬을 이길 수 없습니다. 오히려 반대라고 생각합니다. 파이썬에는 ggplot ( seaborn 과 같은 더 많은 파이썬 옵션이 있기 때문에 직접 사용하지 않음)이있을 뿐만 아니라 bokeh 와 같은 패키지로 브라우저에서 대화 형 시각화를 수행 할 수도 있습니다 .
Emre

10
또한 R은 Shiny와 대화식 비주얼리 제이션 기능을 가지고 있습니다.
stanekam

13
Librariers-나는 그것에 전혀 동의하지 않습니다. R은 지금까지 가장 풍부한 도구 세트이며, 그보다 더 많은 정보를 적절한 방식으로, 부분적으로 S를 상속함으로써, 부분적으로 가장 유명한 평판이 좋은 전문가 커뮤니티 중 하나가 제공합니다.
rapaio

34
"속도 : R 소프트웨어는 처음에는 큰 계산에 문제가있었습니다 (예 : nxn 행렬 곱셈). 그러나이 문제는 Revolution Analytics에 의한 R의 도입으로 해결됩니다. C에서 계산 집약적 인 연산을 재 작성했습니다. 파이썬이 고급 언어 인 것은 상대적으로 느립니다. " 나는 숙련 된 R 사용자는 아니지만 R에서 저수준 구현으로 거의 모든 것을 알고있는 한 numpy / scipy / pandas / scikit-learn / what에서 비슷한 저수준 구현을 가지고 있습니다. 파이썬에는 또한 numba와 cython이 있습니다. 이 점은 동점이어야합니다.
Dougal

8
"빅 데이터 다루기"의견에 따르면, 파이썬은 빠른 속도를 자랑하는 아파치 스파크가 지원하는 3 개 언어 중 하나라고 덧붙입니다. C 백엔드를 갖는 R에 대한 귀하의 의견은 사실이지만 파이썬도 scikitlearn 라이브러리도 매우 빠릅니다. 귀하의 게시물은 균형이 잘 잡혀 있다고 생각하지만 속도는 적어도 동점이라고 주장하며 확장 성 (예 : 빅 데이터 처리)은 확실히 파이썬을 선호합니다.
jagartner

23

"python이 더 낫다"또는 "R이 x보다 훨씬 낫다"와 같은 것은 없습니다.

내가 아는 유일한 사실은 업계에서 많은 사람들이 파이썬을 고수한다는 것입니다. 그것이 그들이 대학에서 배운 것이기 때문입니다. 파이썬 커뮤니티는 실제로 활성화되어 있으며 ML 및 데이터 마이닝 등에 대한 몇 가지 훌륭한 프레임 워크가 있습니다.

그러나 솔직히 말해서, 좋은 c 프로그래머를 얻는다면 사람들은 파이썬이나 r에서하는 것과 같은 일을 할 수 있습니다. 좋은 자바 프로그래머가 있으면 자바의 모든 것을 할 수 있습니다.

따라서 편안한 언어를 고수하십시오.


5
그러나 도서관은 어떻습니까? 이러한 우리 C 또는 Java 범용 언어로 재 구현하는 것이 완전히 비현실적 고급 R 패키지 (Ranfom 숲 또는 캐럿 생각)이있다
산티아고 Cepas

mahout 즉, 자바에 대한 임의의 숲을 지원
Johnny000

1
예, 그러나 R은 많은 양의 데이터를 처리하는 데 필요한 성능을 발휘하지 못하며 대부분 산업용으로 실제로 큰 데이터 세트를 가지고 있습니다.
Johnny000

1
그렇습니다. 좋은 프로그래머는 C에서도 같은 일을 할 수 있습니다. 그러나 나쁜 프로그래머는 숙련 된 프로그래머가 C에서 할 수있는 한 빨리 파이썬에서 할 수 있습니다.
Pithikos

1
필자는 항상 사실이라고 생각하지 않습니다. @Pithikos 기본 수학 공식을 고려할 때 일반적으로 R 또는 Python 라이브러리에 대한 불필요하게 간결한 구문을 넘어서서보다 VB / T-SQL로 더 빠르게 구현할 수 있습니다. 그리고 그 과정에서 결과 코드를 훨씬 확장 가능하게 만듭니다. 이 라이브러리가 존재하기 때문에 기쁘지만 여기에는 단점이 있습니다. 일부 상황과 특정 프로젝트에서는이를 우회하는 것이 좋습니다.
SQLServerSteve

16

몇 가지 추가 생각.

프로그래밍 언어 '자체'는 도구 일뿐입니다. 모든 언어는 어떤 유형의 구조물을 다른 것보다 쉽게 ​​구축 할 수 있도록 설계되었습니다. 그리고 프로그래밍 언어의 지식과 숙달은 다른 언어에 비해 해당 언어의 기능보다 더 중요하고 효과적입니다.

내가 알 수있는 한이 질문에는 두 가지 차원이 있습니다. 첫 번째 차원은 빠른 속도로 개념 또는 모델의 증거를 탐색하고 증명할 수있는 능력으로, 통계 테스트, 그래픽, 측정 도구 등과 같은 상황을 연구 할 수있는 충분한 도구를 보유하고 있습니다. 이런 종류의 활동은 일반적으로 연구자와 데이터 과학자들이 선호합니다 (저는 그것이 무엇을 의미하는지 궁금하지만,이 용어를 느슨한 정의로 사용합니다). 그것들은 증명이나 주장에 사용될 수있는 잘 알려지고 검증 된 도구에 의존하는 경향이 있습니다.

두 번째 차원은 도구, 알고리즘 또는 모델을 확장, 변경, 개선 또는 만들 수있는 능력입니다. 이를 위해서는 적절한 프로그래밍 언어가 필요합니다. 거의 모두 동일합니다. 회사에서 일하는 경우 회사의 인프라에 의존하는 것보다 내부 문화 및 선택이 크게 줄어 듭니다. 또한 프로덕션 용도로 알고리즘을 구현하려면 구현을 신뢰해야합니다. 그리고 당신이 숙달하지 않은 다른 언어로 구현하는 것은 당신에게 큰 도움이되지 않습니다.

R 생태계의 첫 번째 활동 유형을 선호합니다. 훌륭한 커뮤니티, 다양한 도구 세트가 있으며 이러한 도구가 예상대로 작동한다는 증거입니다. 또한 신뢰할 수있는 후보 인 Python, Octave (몇 가지 예를 들어)를 고려할 수 있습니다.

두 번째 과제를 위해, 당신은 당신이 정말로 원하는 것을 미리 생각해야합니다. 강력한 프로덕션 준비 도구를 원한다면 C / C ++, Java, C #이 훌륭한 후보입니다. 저는이 범주에서 파이썬을 스칼라와 친구들과 함께 두 번째 시민으로 생각합니다. 나는 화염 전쟁을 시작하고 싶지 않다. 그것은 나의 의견 일 뿐이다. 그러나 개발자로서 17 년이 지난 후에, 나는 당신이 생각하는 모든 것을 할 수있는 자유 (많은 동적 언어에서 일어나는 것처럼)를하는 것보다 엄격한 계약과 지식을 선호합니다.

개인적으로, 나는 가능한 한 많이 배우고 싶습니다. 나는 어려운 방법을 선택하기로 결정했다. 이는 모든 것을 처음부터 구현해야한다는 것을 의미한다. 나는 R을 모델과 영감으로 사용합니다. 도서관에는 큰 보물이 있으며 많은 경험이 증류되어 있습니다. 그러나 프로그래밍 언어로서의 R은 나에게 악몽이다. 그래서 Java를 사용하기로 결정하고 추가 라이브러리를 사용하지 않았습니다. 그건 내 경험 때문일뿐입니다.

시간이 있다면 할 수있는 가장 좋은 방법은이 모든 것들과 함께 시간을 보내는 것입니다. 이런 식으로 당신은 자신에게 가장 적합한 답변을 얻을 수 있습니다. Dijkstra는 도구가 생각하는 방식에 영향을 미쳤다고 생각하기 때문에 도구를 이해하기 전에 도구를 아는 것이 좋습니다. 그의 유명한 논문 인 The Humble Programmer 에서 더 많은 내용을 읽을 수 있습니다.


15

나는 지금까지 다른 사람들이 한 말에 덧붙일 것입니다. 한 언어가 다른 언어보다 낫다는 단일 대답은 없습니다.

R은 데이터 탐색 및 학습을위한 더 나은 커뮤니티를 가지고 있습니다. 광범위한 시각화 기능이 있습니다. 반면에, 파이썬은 팬더를 도입 한 이후로 데이터 처리가 향상되었습니다. R (저급 언어 인 R)에 비해 Python의 학습 및 개발 시간은 매우 적습니다.

나는 그것이 당신이 속한 생태계와 개인적 취향으로 궁극적으로 귀결된다고 생각합니다. 자세한 내용은 여기 에서이 비교를 볼 수 있습니다 .


2
"R은 [...] 학습을위한 더 나은 커뮤니티를 가지고 있습니다."-이것은 학습 유형에 따라 크게 달라집니다. R의 신경망 (임의 피드 포워드 아키텍처, CNN, RNN)은 얼마입니까?
Martin Thoma

1
R은 실제로 "저수준"IMO가 아닙니다. 역동적 인 언어이기도합니다.
xji

12

모든 데이터 관련 문제를 해결하는 데 사용할 수있는 은색 글 머리 기호는 없습니다. 언어 선택은 문제의 상황, 데이터 크기 및 직장에서 일하는 경우 사용하는 것을 고수해야합니다.

개인적으로 시각화 라이브러리와 대화 형 스타일로 인해 Python보다 R을 더 자주 사용합니다. 그러나 더 많은 성능이나 구조적 코드가 필요한 경우 SciKit-Learn, numpy, scipy 등과 같은 최고의 라이브러리가 있기 때문에 Python을 사용합니다. 프로젝트에서 R과 Python을 모두 사용합니다.

따라서 데이터 과학 작업을 시작하는 경우 두 가지를 모두 배우는 것이 좋습니다 .PythonPandas 와 함께 R과 유사한 인터페이스를 제공하기 때문에 어렵지 않습니다 .

훨씬 더 큰 데이터 세트를 처리해야하는 경우 Java (Hadoop, Pig, Hbase 등)로 구축 된 에코 시스템을 벗어날 수 없습니다.


8

더 나은 언어는 없습니다. 나는 둘 다 시도했지만 파이썬에 익숙하기 때문에 파이썬 만 사용합니다. 나는 아직도 물건을 배우고 있지만 지금까지 파이썬으로 어떤 장애물도 만나지 않았습니다. 파이썬의 좋은 점은 커뮤니티가 너무 좋아서 인터넷에서 쉽게 많은 도움을받을 수 있다는 것입니다. 그 외에는 다른 사람들이 추천하지 않는 언어로 가고 싶다고 말하고 싶습니다.


8

내 경험상, 대답은 현재 진행중인 프로젝트에 달려 있습니다. 순수한 연구를 위해서는 다음과 같은 두 가지 이유로 R을 선호합니다. 1) 다양한 라이브러리 및 2) 많은 데이터 과학 문헌에는 R 샘플이 포함됩니다.

일반인이 대화식 인터페이스를 사용해야하는 프로젝트의 경우 R이 너무 제한적이라는 것을 알았습니다. Shiny는 훌륭한 시작이지만 아직 충분히 유연하지는 않습니다. 이 경우 R 작업을 Python 또는 js로 이식하는 것을 살펴볼 것입니다.


8

다른 모든 답변을 해결하지 못하는 문제는 라이센스 문제 입니다.

앞서 언급 한 훌륭한 R 라이브러리의 대부분은 GPL입니다 (예 : ggplot2 , data.table ). 이렇게 하면 소프트웨어를 독점 형태로 배포 할 수 없습니다.

이러한 라이브러리의 많은 사용이 소프트웨어 배포를 의미하지는 않지만 (예 : 오프라인으로 모델 교육) GPL 자체로 인해 회사에서 소프트웨어를 사용하지 못하게 할 수 있습니다. 적어도 내 경험으로는.

반면 파이썬 영역에서는 대부분의 라이브러리에 BSD 또는 MIT와 같은 비즈니스 친화적 인 배포 라이센스가 있습니다.

학계에서 라이센스 문제는 일반적으로 문제가 아닙니다.



6

R이 직면 한 실제 과제 중 하나는 다른 버전과 호환되는 다른 패키지입니다 .. 최신 버전의 R에는 사용할 수없는 많은 R 패키지가 있습니다. 그리고 R은 라이브러리로 인해 오류가 발생합니다. 번역..


3
이것이 R의 특정 문제인지 확실하지 않거나 Python과 R의 차이점에 대한 질문에 답합니다.
Sean Owen

5

나는 R을 시도하지 않았다 (잘, 조금, 그러나 좋은 비교를하기에는 충분하지 않다). 그러나 다음은 몇 가지 Pythons 강점입니다.


3

Python은 완전한 프로그래밍 언어이므로 Python보다 R을 선호합니다 .Python으로 작성된 HTTP 서버를 사용하여 데이터를 수집하고, 고급 ML 작업을 수행 한 다음 결과를 온라인으로 게시하는 등의 엔드-투-엔드 머신 학습 작업을 수행 할 수 있습니다. 이것은 모두 파이썬에서 할 수 있습니다. 실제로 R은 배우기가 더 어려웠고 Python을 배우는 데 대한 대가는 거의 모든 프로그래밍 작업에 사용될 수 있기 때문에 훨씬 큽니다.


2
R
Gaius

2

R : R은 공개 소스입니다. 전통적으로 학계와 연구에 사용되었습니다. 오픈 소스 특성으로 인해 최신 기술이 빠르게 출시됩니다. 인터넷을 통해 사용할 수있는 많은 문서가 있으며 매우 비용 효율적인 옵션입니다. Python : 오픈 소스 스크립팅 언어로 시작하여 Python 사용은 시간이 지남에 따라 증가했습니다. 오늘날이 라이브러리는 라이브러리 (numpy, scipy 및 matplotlib)와 거의 모든 통계 작업 / 모델 구축을위한 기능을 제공합니다. 팬더가 도입 된 이후, 구조화 된 데이터에 대한 작업이 매우 강력 해졌습니다.

파이썬 코드

라이브러리 가져 오기

팬더, numpy와 같은 다른 필요한 라이브러리를 가져옵니다.

sklearn import linear_model에서

로드 트레인 및 테스트 데이터 세트

피처 및 응답 변수 식별 및 값은 숫자 및 숫자 배열이어야합니다.

x_train = input_variables_values_training_datasets y_train = target_variables_values_training_datasets x_test = input_variables_values_test_datasets

선형 회귀 객체 만들기

linear = linear_model.LinearRegression ()

훈련 세트를 사용하여 모델 훈련 및 점수 확인

linear.fit (x_train, y_train) linear.score (x_train, y_train)

방정식 계수 및 절편

print ( '계수 : \ n', linear.coef_) print ( '차단 : \ n', linear.intercept_)

출력 예측

predicted = linear.predict (x_test) R 코드

로드 트레인 및 테스트 데이터 세트

피처 및 응답 변수 식별 및 값은 숫자 및 숫자 배열이어야합니다.

x_train <-input_variables_values_training_datasets y_train <-target_variables_values_training_datasets x_test <-input_variables_values_test_datasets x <-cbind (x_train, y_train)

훈련 세트를 사용하여 모델 훈련 및 점수 확인

선형 <-lm (y_train ~., data = x) 요약 (선형)

출력 예측

예측 = 예측 (선형, x_test)


0

파이썬에는 포인트 클릭 GUI 가 SPSS와 SAS로 바뀌지 않는다고 생각 합니다. 이것들과 놀아 보는 것은 정말로 재미 있습니다.


0

여기에 이미지 설명을 입력하십시오

이 이미지는 링크 된 게시물에 있습니다. 파이썬이나 R을 사용하는 것에 대한 의문이 생길 때마다 나는 그것을 조사하고 매우 유용하다는 것을 증명합니다.


그래서 당신은 무엇을 선택합니까?
Serhii Polishchuk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.