Есть ли разница между Python Boruta и R Boruta? - PullRequest
0 голосов
/ 23 октября 2019

Я использовал пакет Boruta в R и Python для одного и того же набора данных. И все шаги и другие методы, которые я применил, одинаковы. Но результаты Boruta отличаются в Python и R для выбора функций. В R, 46 объектов выбраны, но 20 объектов выбраны в Python. Какова причина?

R

 M_boruta <- Boruta::Boruta(is_churn ~ . -cust_id, data = Mobile, doTrace = 2) 

print(M_boruta)

plot(M_boruta, xlab = "", xaxt = "n")

lz_2 <- lapply(1:ncol(M_boruta$ImpHistory),function(i)
  M_boruta$ImpHistory[is.finite(M_boruta$ImpHistory[,i]),i])

names(lz_2) <- colnames(M_boruta$ImpHistory)

Labels_2 <- sort(sapply(lz_2,median))
axis(side = 1,las=2,labels = names(Labels_2),
     at = 1:ncol(M_boruta$ImpHistory), cex.axis = 0.7)

M_boruta_attr <- getSelectedAttributes(M_boruta, withTentative = F)

M_boruta_df <- Mobile[ ,(names(Mobile) %in% M_boruta_attr)]

str(M_boruta_df)]

Python

  from sklearn.ensemble import RandomForestClassifier
    from boruta import BorutaPy
    rfc = RandomForestClassifier(n_estimators=1000, n_jobs=-1,    class_weight='balanced',  max_depth=50)
    boruta_selector = BorutaPy(rfc, n_estimators='auto', verbose=2)
    churn_gsm_bor_x = churn_gsm_bor.iloc[:,1:].values
    churn_gsm_bor_y = churn_gsm_bor.iloc[:,0].values.ravel()
    boruta_selector.fit(churn_gsm_bor_x, churn_gsm_bor_y)
    print("=============BORUTA==============")
    print(boruta_selector.n_features_)
    print(boruta_selector.support_)
    print(boruta_selector.ranking_)
    churn_gsm_bor_x_filter=boruta_selector.transform(churn_gsm_bor_x)
    print(churn_gsm_bor_x_filter)

1 Ответ

0 голосов
/ 01 ноября 2019

Это может быть связано с тем, что параметры, которые вы указываете для классификатора Random Forest в Python, отличаются от параметров по умолчанию, которые вы используете в R (ср. https://cran.r -project.org / web / packages / randomForest / randomForest.pdf или ranger в более поздних версиях Boruta: https://cran.r -project.org / web / packages / ranger / ranger.pdf ). Я хотел бы отметить, что вы также устанавливаете максимальную глубину деревьев в реализации Python выше, чем рекомендуется (см. https://github.com/scikit-learn-contrib/boruta_py) - лично я обнаружил, что это может оказать большое влияние на количество функцийвыбран.

...