Matlab과 Python 중에서 일반적인 통계 데이터 분석에 적합한 언어는 무엇입니까? 접근성 이외의 장단점은 무엇입니까?
Matlab과 Python 중에서 일반적인 통계 데이터 분석에 적합한 언어는 무엇입니까? 접근성 이외의 장단점은 무엇입니까?
답변:
지난 10 년 이상 동안 열심히 공부 한 Matlab 사용자는 Python을 배우는 것이 좋습니다. 언어에 대해 충분히 숙련 된 후에는 배우는 언어로 작업 할 때 충분히 생산적이지 않은 것처럼 보이며 기본 최고 언어를 사용하게됩니다. 최소한, 나는 당신이 여러 언어에서 동등하게 능숙 해 지도록 제안 할 것입니다 (R도 제안 할 것입니다).
내가 Matlab에 대해 좋아하는 것 :
내가 Matlab에 대해 싫어하는 것 :
median
를 수행 한 다음 중간 값을 취하는 Matlab의 기능 입니다. 이것은 70 년대 이후 잘못된 알고리즘이었습니다.-nojvm
것이 도움 이되는 것으로 보인다 .
shuffle
도구 상자에있을 수 있으며, MATLAB이 아닙니다. randperm
랜덤 벡터의 정렬 인덱스를 반환하는 내장보다 나쁘지 않습니다 . 다시 말하지만, 이것은 아마도 잘못된 알고리즘 일 것입니다. (방금 Knuth-Fisher-Yates에 대한 통계는 여기에 나와 있습니다.)
randperm
점은 시드의 영향을받는 randn
반면 Knuth-Fisher-Yates의 멕시 드 버전은 아마 내부 씨앗에 액세스 할 수 없으며 순수한 .m 버전의 셔플은 아마도 너무 느려
프로그래밍이 통계를 만나는 3 가지 영역 (내 머리 꼭대기)으로 나눠 보자 : 데이터 크 런칭, 수치 루틴 (최적화 등) 및 통계 라이브러리 (모델링 등).
첫째, 가장 큰 차이점은 파이썬이 범용 프로그래밍 언어라는 것입니다. Matlab은 여러분의 세계가 포트란 숫자 형 배열에 대략 동형 인 한 훌륭합니다. 데이터 뭉개 기 및 관련 문제를 다루기 시작하면 Python이 Matlab보다 뛰어납니다. 예를 들어 Greg Wilson의 저서 : 데이터 크 런칭 : Java, Python 등을 사용하여 일상적인 문제 해결을 참조하십시오 .
두 번째로 Matlab은 실제로 수치 작업으로 빛납니다. 많은 연구 커뮤니티가 그것을 사용하고 압축 센싱에서 종이와 관련된 일부 알고리즘을 찾고 있다면 Matlab에서 구현을 찾을 가능성 이 훨씬 큽니다. 반면 Matlab은 일종의 과학 컴퓨팅 PHP입니다. 태양 아래서 모든 기능을 수행하기 위해 노력하고 있습니다. 프로그래밍 언어 전문가라면 미학과 건축학의 결과물이 열광하지만 실용적 측면에서 작업이 완료됩니다. Numpy / Scipy의 등장으로이 중 많은 부분이 관련성이 떨어졌습니다. Python에서 사용할 수있는 최적화 및 머신 러닝 라이브러리를 찾을 수있을 것입니다. C와의 인터페이스는 어느 언어에서나 쉽습니다.
모델링을위한 통계 라이브러리의 가용성과 관련하여 R과 비교할 때 둘 다 다소 부족합니다 (물론 통계 작업을하는 사람들의 80 %가 필요하다고 생각합니다). 파이썬 측면 에서이 질문을 참조하십시오 : 통계 워크 벤치로서의 파이썬 . Matlab 측의 경우 통계 도구 상자가 있다는 것을 알고 있지만 다른 사람이 지식을 더 많이 채울 수있게합니다 (Matlab에 대한 나의 경험은 통계와 관련이없는 수치 작업으로 제한됩니다).
또한 10 년 이상 열성적인 Matlab 사용자였습니다. 그 몇 년 동안 나는 내가 일을 위해 만든 도구 상자를 넘어서 일할 이유가 없었습니다. 툴박스를 위해 많은 기능이 만들어졌지만, 빠른 턴어라운드 분석을위한 알고리즘을 만들어야했습니다. 이 알고리즘은 종종 행렬 수학을 사용하기 때문에 Matlab은 제 직업에 이상적인 후보였습니다. Matlab 툴박스 코드 외에도 언어 간의 상호 운용성이 있었기 때문에 우리 그룹의 다른 사람들도 Java에서 광범위하게 작업했습니다. 몇 년 동안 나는 Matlab에 완전히 만족했지만 약 3 년 전에 Matlab에서 느린 전환을 시작하기로 결정했고 지금은 약 1 년 안에 열지 않았다고 생각했습니다. 나의 이사 이유는 다음과 같습니다.
-nodesktop
옵션을 사용하는 것이 대부분은 좋지만 문제가 있습니다.이것은 Matlab에 대한 나의 많은 그립 중 일부에 지나지 않습니다. 그것은 하나의 빛나는 속성입니다 : 쉽고, 코드를 작성하는 것은 쉽고, 추악하지 않습니다. 나는 그것을 떠났고, 나의 탐구는 Clojure-> JavaScript-> Python <-> Julia; 그래, 난 여기 저기 왔어