Я использовал пакет 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)