I는 Y가, N 선형 회귀를 수행 - 100 행 5 열 판다 DataFrame동시에
I은 X가 - 들면 100 행 5 열 판다 DataFrame
를 I = 0, ..., 4 x [:, i]에 대해 y [:, i]를 회귀시키고 싶다.
나는 루프를 사용하여이를 수행하는 방법을 알고있다.
그러나 거기에 루프가 없도록 선형 회귀를 벡터화하는 방법이 있습니까?
I는 Y가, N 선형 회귀를 수행 - 100 행 5 열 판다 DataFrame동시에
I은 X가 - 들면 100 행 5 열 판다 DataFrame
를 I = 0, ..., 4 x [:, i]에 대해 y [:, i]를 회귀시키고 싶다.
나는 루프를 사용하여이를 수행하는 방법을 알고있다.
그러나 거기에 루프가 없도록 선형 회귀를 벡터화하는 방법이 있습니까?
내가 아는 한 최적화 된 Fortran 라이브러리 인 LAPACK에이 모든 것을 한번에 넣을 방법이 없다. 각 회귀는 독자적인 최적화 문제이기 때문이다.
4 개 이상의 루프가 회귀 자체에 비례하여 시간이 걸리지 않으므로 각 회귀가 고립 된 선형 대수학 문제이기 때문에 완전히 계산해야한다는 것에 유의하십시오 ... 그래서 많은 시간이 있다고 생각하지 않습니다. 여기에 저장하십시오 ...
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 이미 언급 한 것을 명심하십시오. 이것은 루프 (병렬 또는 '동시에'실행되지 않음)보다 현저하게 빠르지는 않을 것입니다. 그러나이 작업을 수행하는 파이썬/팬더 방식을 읽는 것은 훨씬 더 좋을 것입니다 ...
실행할 수 있습니다. 병렬 사용 예 프로세스의 풀 (pool)이지만, 프로세스를 설정하고 앞뒤로 데이터를 교환하는 오버 헤드의 가치가 있는지 여부는 논쟁의 여지가 있습니다 – TooTone