2014-04-06 4 views
0

I는 Y가, N 선형 회귀를 수행 - 100 행 5 열 판다 DataFrame동시에

I은 ​​X가 - 들면 100 행 5 열 판다 DataFrame

를 I = 0, ..., 4 x [:, i]에 대해 y [:, i]를 회귀시키고 싶다.

나는 루프를 사용하여이를 수행하는 방법을 알고있다.

그러나 거기에 루프가 없도록 선형 회귀를 벡터화하는 방법이 있습니까?

+0

실행할 수 있습니다. 병렬 사용 예 프로세스의 풀 (pool)이지만, 프로세스를 설정하고 앞뒤로 데이터를 교환하는 오버 헤드의 가치가 있는지 여부는 논쟁의 여지가 있습니다 – TooTone

답변

0

내가 아는 한 최적화 된 Fortran 라이브러리 인 LAPACK에이 모든 것을 한번에 넣을 방법이 없다. 각 회귀는 독자적인 최적화 문제이기 때문이다.

4 개 이상의 루프가 회귀 자체에 비례하여 시간이 걸리지 않으므로 각 회귀가 고립 된 선형 대수학 문제이기 때문에 완전히 계산해야한다는 것에 유의하십시오 ... 그래서 많은 시간이 있다고 생각하지 않습니다. 여기에 저장하십시오 ...

0

ine 단일 데이터 프레임에서 데이터를 가져 오는 경우 '적용'을 사용해야 가능합니다. 나는 순간에 그것을 테스트 할 수 없습니다,하지만 난 이런 걸 생각 : MultiIndex있는 단일 DF 만들기 :

i row x y 
0 0 1.1 2.2 
... 
0 99 3.14 2.3 
1 0 2.2 3.3 
... 
1 99 4.5 3.5 
2 0 ... ... 

을 다음 당신은 '내가'열을 기준으로 그룹을 수 있고,에 임의의 함수를 적용 하급 집단.

def linear_fit(sub_df): 
    do_linear_fit(sub_df['x'], sub_df['y']) 

df.groupby('i').apply(linear_fit) 

내가 그렇지 않으면 내가 더 많은 도움을 제공 할 수있는, 희망이 도움이

...

그러나 @Retozi 이미 언급 한 것을 명심하십시오. 이것은 루프 (병렬 또는 '동시에'실행되지 않음)보다 현저하게 빠르지는 않을 것입니다. 그러나이 작업을 수행하는 파이썬/팬더 방식을 읽는 것은 훨씬 더 좋을 것입니다 ...

관련 문제