Ich benutze einen gleichen Datensatz, um logistische Regressionsmodell sowohl in R und Python Sklearn zu trainieren. Der Datensatz ist nicht ausgeglichen. Und ich finde, dass der Auc ganz anders ist. Diese ist der Code, der Python:Warum der Auc ist so anders als logistische Regression von Sklearn und R
model_logistic = linear_model.LogisticRegression() #auc 0.623
model_logistic.fit(train_x, train_y)
pred_logistic = model_logistic.predict(test_x) #mean:0.0235 var:0.023
print "logistic auc: ", sklearn.metrics.roc_auc_score(test_y,pred_logistic)
Dies ist der Code von R:
glm_fit <- glm(label ~ watch_cnt_7 + bid_cnt_7 + vi_cnt_itm_1 +
ITEM_PRICE + add_to_cart_cnt_7 + offer_cnt_7 +
dwell_dlta_4to2 +
vi_cnt_itm_2 + asq_cnt_7 + watch_cnt_14to7 + dwell_dlta_6to4 +
auct_type + vi_cnt_itm_3 + vi_cnt_itm_7 + vi_dlta_4to2 +
vi_cnt_itm_4 + vi_dlta_6to4 + tenure + sum_SRCH_item_7 +
vi_cnt_itm_6 + dwell_itm_3 +
offer_cnt_14to7 + #
dwell_itm_2 + dwell_itm_6 + CNDTN_ROLLUP_ID +
dwell_itm_5 + dwell_itm_4 + dwell_itm_1+
bid_cnt_14to7 + item_prchsd_cnt_14to7 + #
dwell_itm_7 + median_day_rate + vb_ratio
, data = train, family=binomial())
p_lm<-predict(glm_fit, test[1:nc-1],type = "response")
pred_lm <- prediction(p_lm,test$label)
auc <- performance(pred_lm,'auc')@y.values
Der AUC-Wert von 0,623 Python ist, während der R 0,887 ist. Also ich möchte wissen, was mit der sklearn logistischen Regression falsch ist und wie man es beheben kann. Vielen Dank.
für eine, '1: nc-1' ist falsch – rawr
Dieser Fehler wird nicht viel ausmachen. 1: nc-1 ist dasselbe wie 0: (nc-1), was als eine Auswahl äquivalent zu 1: (nc-1) ist. – nograpes
Es wäre hilfreich, wenn Sie ein kleines reproduzierbares Beispiel erstellt hätten. Zum Beispiel könnten Sie eine kleine einfache Datenmenge in R erstellen, die Sie dann sowohl in Python als auch in R lesen und ausführen. Außerdem wäre es hilfreich zu bestätigen, dass die Koeffizienten der logistischen Regression in beiden Modellen gleich waren. – nograpes