2010-08-23 2 views
6

R 및 파이썬 사용자가 여기 있습니다. 매일의 데이터 분석을 위해 R을 사용하고 텍스트 처리와 쉘 스크립팅에 더 많은 작업을하는 Python을 사용합니다. 점점 커지는 데이터 세트로 작업하고 있으며,이 파일들은 종종 바이너리 또는 텍스트 파일로 제공됩니다. 일반적으로하는 일의 유형은 통계/기계 학습 알고리즘을 적용하고 대부분의 경우 통계 그래픽을 작성하는 것입니다. SQLite와 함께 R을 사용하고 반복적 인 작업을 위해 C를 작성합니다. Hadoop을 살펴보기 전에 NumPy/Scipy에 시간을 투자하는 것이 좋다고 들었습니다. 메모리 관리가 더 좋다고 들었 기 때문입니다. [배경 지식이있는 Numpy/Scipy로 전환하는 것이 그리 큰 것 같지 않습니다] - 경험이있는 사람이 있는지 궁금합니다. 두 가지를 사용하여이 분야의 개선점에 대해 논평 할 수 있으며,이 문제를 다루는 숙어가 Numpy에 있다면. (나는 Rpy2에 대해서도 알고 있지만, Numpy/Scipy가 나의 필요를 다룰 수 있는지 궁금해한다.) 감사합니다 -R 사용자를위한 Numpy?

+0

의견을 근거로 투표를 종료하십시오. –

답변

10

기계 학습 및 통계를 수행 할 환경을 찾을 때 R의 힘은 가장 확실하게 라이브러리의 다양성입니다. 내 지식으로 SciPy + SciKits는 CRAN을 대신 할 수 없습니다.

메모리 사용에 관해서, R은 파이썬이 참조 전달을 사용하는 동안 패러다임 패러다임을 사용하고있다. 값에 의한 전달은 "직관적 인"코드로 이어질 수 있고, 참조에 의한 전달은 메모리 사용을 최적화하는 데 도움이 될 수 있습니다. Numpy는 또한 배열 (복사본이없는 서브 어레이의 일종)에서 "뷰"를 가질 수 있습니다.

속도와 관련하여 순수 파이썬은 배열의 개별 요소에 액세스하는 데있어 순수 R보다 빠르지 만 numpy 배열 (benchmark)을 처리하면이 이점이 사라집니다. 다행히 Cython을 사용하면 속도가 크게 향상됩니다.

Big Data로 작업하는 경우 Python (HDF5)을 사용하면 스토리지 기반 어레이에 대한 지원이 향상됩니다.

rpy2는 가능한 한 전환에 대한 옵션을 탐색하는 데 도움이 될 수 있습니다 (복사본이 만들어지지 않고 R과 Numpy 사이에서 배열을 왕복 할 수 있음).

+0

예, 복사 - 의해 - 가치 의미론은 살인자입니다. Big Data를 살펴 보는 것도 의미가 있었지만, 말하듯이 SciPy로가는 길은 편합니다. – hatmatrix

+0

그렇습니다. 기능 세계는 copy-on-modification과 같은 최적화 트릭으로 빠르게 옮겨졌습니다. R, "약속"(수정 된 경우 복사)). 그러나 개체가 수정되지 않은 경우에만 도움이됩니다 (함수에 매개 변수로 전달되는 동안 매우 큰 행렬의 rownames를 변경하면 도움이되지 않습니다). – lgautier

+1

실제로 기계 학습은 예를 들어 http://mdp-toolkit.sourceforge.net/과 같은 파이썬에서 꽤 잘 다루어졌으며 http://mloss.org/software/language/python/ – user333700

11

나는 매일 NumPy와 R을 사용합니다.

숫자가 많은 경우, NumPy에서 R까지 큰 여백 ('R'패키지 'Matrix'포함)을 선호합니다. 구문 정리 도구가 더 커지고 계산 속도가 빨라집니다. R은 어떤 방법 으로든 천천히). 예를 들어, NumPy의 방송 기능은 R에 아날로그가 있다고 생각하지 않습니다.

예를 들어 csv 파일에서 데이터 세트를 읽고 ML 알고리즘 (예 : 평균 센터 또한

data = NP.loadtxt(data1, delimiter=",") # 'data' is a NumPy array 
data -= NP.mean(data, axis=0) 
data /= NP.max(data, axis=0) 

내가 ML 알고리즘을 부호화 할 때, I 선형 대수 나 소자 와이즈에서 작동 할 수 있으며이 또한 이해 데이터 구조가 필요하다고 발견 (예를 들어, 행렬 곱셈 각 치수) 스케일 재 단이 필요 , 전치 등). NumPy는이를 가져오고 이러한 하이브리드 구조를 쉽게 만들 수 있습니다 (연산자 오버로드 또는 서브 클래 싱 등 없음).

당신은 NumPy/SciPy에 실망하지 않을 것입니다. 아마도 놀랄 것입니다.

그래서, 몇 가지 권장 사항 - 일반적으로 특히, 귀하의 질문에 사실을 주어진 :

  • 는 NumPy와와 Scipy를 모두 설치합니다. 대략적인 기준으로, NumPy와는와 ( NumPy와보다 실제로 여러번 크다) SciPy (특히 ndarray 단위) 코어 데이터 구조를 제공하고이 특정 영역 기능을 제공한다 (예를 들어, 통계, 신호 처리, 통합).

  • dev 버전이 2.0이므로 저장소 버전, 특히 w/r/t NumPy를 설치하십시오. Matplotlib과 NumPy는 긴밀하게 통합되어 있습니다. 다른 라이브러리를 사용하지 않고도 하나를 사용할 수 있지만 둘 다 파이썬 라이브러리 중에서 각각의 클래스에서 가장 좋습니다. 당신은 easy_install을 통해이 세 가지를 모두 얻을 수 있습니다.

  • NumPy와/SciPy는 modules 여러 특별히 클러스터링 패키지와 통계 패키지를 포함하여, 기계 학습/통계로 이동합니다.

  • 뿐만 아니라 패키지 일반 연산에 관한 있지만 메이크 ML을 코딩하는 것은, 특히 많은 빠른 최적화와 선형 대수 알고리즘을를.

  • 도 있습니다있는 SciKit, 하지 기본 NumPy와 나 SciPy 라이브러리에 포함 별도로 설치해야합니다. 일반적으로 각 SciKit은 해당 도메인에서 간소화 코딩의 편의 용 래퍼 집합입니다. 가장 관련성이 높은 것으로 판단되는 SciKits는 (가장 근접한 가까운 이웃)이고 입니다 (로지스틱 회귀, 다중 레이어 퍼셉트론, 지원 벡터 머신과 같은 ML/통계 회귀 및 분류 알고리즘 세트) .

+0

은/= np.max()가/= np.std()가 아니어야합니까? – denis

+1

아니요, 안됩니다.나는 ML 입력에 대한 전처리 데이터의 철저한 낭독이 아닌 위의 예를 제시했습니다. 때로는 크기를 재조정하여 각 차원에 단위 분산이 있으므로 원하는 경우가 아니라 다른 경우가 있습니다. 어쨌든, 본 예제는 데이터를 ML 입력으로 준비하는 매우 일반적인 기술을 설명하지만 다른 몇 가지가 있습니다 (예 : "기계 학습 : 알고리즘 관점, Stephen Marsland, Ch 3, 2009, 메서드 사용 – doug

+0

모든 참조 주셔서 감사합니다 - 나는 그들에게 시도를 줄 것이다 ... – hatmatrix

2

내가 R에 대해 언급 할 수는 없지만 여기 NumPy와/Scipy 및 ML의 링크의 커플 :

그리고 책 (일부만 살펴 보았습니다. code) : Marsland, 기계 학습 (NumPy와 포함), 2009 406p, ISBN 1420067184

당신이 당신의 경험까지 다른 사람에게 도움이 될 수있는 NumPy와/Scipy 학습 곡선, 에 대한 몇 가지 메모를 수집 할 수 있다면.

+0

참조 용 Thx에 대한 자세한 목록이 있습니다. – hatmatrix