scikit-learn Python의 ElasticNet과 R의 Glmnet의 차이점


11

ElasticNetPython과 glmnetR의 동일한 데이터 세트 에서 scikit-learn을 사용하여 Elastic Net 모델을 피팅 하면 동일한 산술 결과가 생성 되는지 여부를 확인하려고 한 사람이 있습니까? 나는 두 가지 함수가 인수에 전달하는 기본값이 다르기 때문에 많은 매개 변수 조합을 실험하고 데이터를 스케일링했지만 두 언어간에 동일한 모델을 생성하는 것으로 보이지는 않습니다. 아무도 같은 문제에 직면 했습니까?


답변:


6

마지막으로 다음 코드와 동일한 값을 얻었습니다.

파이썬

# normalize function that gives the same with R
def mystandardize(D):
   S = np.std(D, axis=0, ddof=1)
   M = np.mean(D, axis = 0)
   D_norm = (D-M)/S
return [D_norm, M, S]

Y_norm_train = pd.DataFrame(mystandardize(Y_train)[0])
glmnet_regr = linear_model.ElasticNet(alpha=1, l1_ratio = 0.01,
                                  fit_intercept = True, normalize =    False, tol=0.0000001, max_iter = 100000)
glmnet_regr.fit(X_train, Y_norm_train)

아르 자형

y_norm_train <- scale(y[train_idx])
glmnet_obj_norm <- glmnet(x_train, y_norm_train, alpha=0.01, lambda = 1,  
                   thresh = 1e-07, standardize = FALSE, intercept=TRUE, standardize.response = FALSE)
print_coef(glmnet_obj_norm)

3
R 패키지에 사용 된 포트란 코드를위한 비교적 새로운 파이썬 래퍼가있다 glmnet. 또한 R 에서와 동일한 결과를 얻을 수 있습니다 . github.com/civisanalytics/python-glmnet
Jordi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.