Sự khác biệt giữa ElasticNet trong scikit-learn Python và Glmnet in R


11

Có ai đã cố gắng xác minh xem có phù hợp với mô hình đàn hồi Net với ElasticNetscikit-learn trong Python và glmnettrong R trên cùng một tập dữ liệu tạo ra kết quả số học giống hệt nhau không? Tôi đã thử nghiệm nhiều kết hợp tham số (vì hai hàm khác nhau về giá trị mặc định mà chúng truyền cho các đối số) và cũng thu nhỏ dữ liệu, nhưng dường như không có gì tạo ra cùng một mô hình giữa hai ngôn ngữ. Có ai phải đối mặt với cùng một vấn đề?


Câu trả lời:


6

Cuối cùng tôi đã nhận được các giá trị tương tự với mã sau đây:

Con trăn

# 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)

R

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
Có một wrapper python tương đối mới cho mã Fortran được sử dụng trong R gói glmnet. Điều này cũng sẽ giúp bạn có kết quả tương tự như trong R . github.com/civisanalytics/python-glmnet
Jordi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.