Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python equivalent for R StepAIC for Logistic Regression (direction='Backwards')

I tried to emulate stepAIC function in R doing it "manually" but it takes forever (I posted just the first two tries). Is there something similar to stepAIC function (that eliminates one variable with highest p-value at iteration and minimize AIC) in python for logistic regression?

#create model with double interactions
datapol = data.drop(['flag'], axis=1) #elimino colonna flag dai dati
poly=sklearn.preprocessing.PolynomialFeatures(interaction_only=True,include_bias = False)

#calculate AIC for model with double interactions 
m_sat=poly.fit_transform(datapol)
m1=sm.Logit(np.asarray(flag.astype(int)),m_sat.astype(int))
m1.fit()
print(m1.fit().summary2())

#create new model without variable that has p-value>0.05
mx1=pd.DataFrame(m_sat)
mx2=np.asarray(mx1.drop(mx1.columns[[3]], axis=1))
m2=sm.Logit(np.asarray(flag.astype(int)),mx2.astype(int))
m2.fit()
print(m2.fit().summary2())

edit: I found an algorithm that emulate stepAIC using forward direction https://qiita.com/mytk0u0/items/aa2e3f5a66fe9e2895fa

like image 238
Edoardo Avatar asked Aug 30 '26 08:08

Edoardo


1 Answers

Check for a function called RFE from sklearn package.

# Running RFE with the output number of the variable equal to 9
lm = LinearRegression()
rfe = RFE(lm, 9)             # running RFE
rfe = rfe.fit(X_train, y_train)
print(rfe.support_)           # Printing the boolean results
print(rfe.ranking_)  
like image 70
Rakesh SK Avatar answered Aug 31 '26 21:08

Rakesh SK