R 's glm 패키지를 사용하여 로지스틱 회귀 매개 변수를 계산하고 싶습니다. 나는 python을 사용하고 rpy2를 사용하고있다. 어떤 이유로 r을 사용하여 glm 기능을 실행할 때 rpy2를 사용하는 것보다 훨씬 빠른 결과를 얻습니다. rpy2를 사용한 계산이 왜 더 느린 지 아십니까? V2.13.1 및 RPY2 - - 내가 R을 사용하고 여기에 V2.0.8 입니다 내가 사용하고 코드 : 당신에 대해 벤치마킹하는 전체 R 코드없이rpy2를 사용할 때 느린 glm 계산
import numpy
from rpy2 import robjects as ro
import rpy2.rlike.container as rlc
def train(self, x_values, y_values, weights):
x_float_vector = [ro.FloatVector(x) for x in numpy.array(x_values).transpose()]
y_float_vector = ro.FloatVector(y_values)
weights_float_vector = ro.FloatVector(weights)
names = ['v' + str(i) for i in xrange(len(x_float_vector))]
d = rlc.TaggedList(x_float_vector + [y_float_vector], names + ['y'])
data = ro.RDataFrame(d)
formula = 'y ~ '
for x in names:
formula += x + '+'
formula = formula[:-1]
fit_res = ro.r.glm(formula=ro.r(formula), data=data, weights=weights_float_vector, family=ro.r('binomial(link="logit")'))
glm (y ~ v1 + v2 + ..., data = data) (이 경우 데이터는 CSV 파일에서 업로드 된 데이터 프레임이며 전송 된 데이터와 동일 함) – user5497
새로운 버전을 확인하려고합니다. – user5497
새 버전을 사용해 보았는데 동일한 결과 (같은 속도)를 얻었습니다. 또한 프로파일 러는 대부분의 시간이 마지막 행 (fit_res = ro.r.glm (수식 = ro.r (수식), 데이터 = 데이터, 가중치 = weights_float_vector, family = ro.r ('이항식 (링크 = "로짓")))) – user5497