Я использую логистическую регрессию с нормой L1
(LASSO).
Я решил использовать пакет glmnet
в R
и LogisticRegression()
из пакета sklearn.linear_model
в python
. Насколько я понимаю, это должно дать те же результаты, но это не так.
Обратите внимание, что я не масштабировал свои данные.
Для python
я использовал приведенную ниже ссылку в качестве ссылки:
и для R
я использовал ссылку ниже:
Вот код, используемый в R
###################################
#### LASSO LOGISTIC REGRESSION ####
##################################
x <- model.matrix(Y~., Train.Data.SubPop)[,-1]
y <- Train.Data.SubPop$Y
lambda_seq = c(0.0001, 0.01, 0.05, 0.0025)
cv_output <- cv.glmnet(x,y,alpha=1, family = "binomial", lambda = lambda_seq)
cv_output$lambda.min
lasso_best <- glmnet(x,y, alpha = 1, family = "binomial", lambda = cv_output$lambda.min)
Ниже мой код Python:
C = [0.001, 0.01, 0.05, 0.0025]
for c in C:
clf = LogisticRegression(penalty='l1', C=c, solver='liblinear')
clf.fit(X_train, y_train)
print('C:', c)
print('Coefficient of each feature:', clf.coef_)
print('Training accuracy:', clf.score(X_train_std, y_train))
print('Test accuracy:', clf.score(X_test_std, y_test))
print('')
Когда я экспортировал оптимальное значение из функции cv.glment()
в R
, это дало мне, что оптимальная лямбда равна 0.0001
, однако, если я посмотрю на анализ из python
, лучшая точность/точность и полнота были получены из 0.05
.
Я попытался подогнать модель с 0,05 в R
и дал мне только 1 ненулевой коэффициент, а в phython
у меня было 7.
может кто-нибудь помочь мне понять, почему это несоответствие и разница pleasE?
Кроме того, если кто-то может подсказать, как воспроизвести код python
в R
, это было бы очень полезно!