Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save vb100/6af31cbf9950e598d01cd6add98a3814 to your computer and use it in GitHub Desktop.
Save vb100/6af31cbf9950e598d01cd6add98a3814 to your computer and use it in GitHub Desktop.
Automatic implementations of Backward Elimination in Python.
import statsmodels.formula.api as sm
def backwardElimination(x, SL):
numVars = len(x[0])
temp = np.zeros((50,6)).astype(int)
for i in range(0, numVars):
regressor_OLS = sm.OLS(y, x).fit()
maxVar = max(regressor_OLS.pvalues).astype(float)
adjR_before = regressor_OLS.rsquared_adj.astype(float)
if maxVar > SL:
for j in range(0, numVars - i):
if (regressor_OLS.pvalues[j].astype(float) == maxVar):
temp[:,j] = x[:, j]
x = np.delete(x, j, 1)
tmp_regressor = sm.OLS(y, x).fit()
adjR_after = tmp_regressor.rsquared_adj.astype(float)
if (adjR_before >= adjR_after):
x_rollback = np.hstack((x, temp[:,[0,j]]))
x_rollback = np.delete(x_rollback, j, 1)
print (regressor_OLS.summary())
return x_rollback
else:
continue
regressor_OLS.summary()
return x
SL = 0.05
X_opt = X[:, [0, 1, 2, 3, 4, 5]]
X_Modeled = backwardElimination(X_opt, SL)
@Epale
Copy link

Epale commented Oct 22, 2019

Hi I need your help please

Am using Anaconda with python 3.7.
trying to do backward elimination and observed this error

Code:
X_opt = X[:, [0,1, 2, 3, 4, 5]]
Y = dfle.iloc[:, 4].values
model_ols = sm.ols(endog = Y, exog = X_opt).fit()

Error:
model_ols = sm.ols(endog = Y, exog = X_opt).fit()
Traceback (most recent call last):

File "", line 1, in
model_ols = sm.ols(endog = Y, exog = X_opt).fit()

TypeError: from_formula() missing 2 required positional arguments: 'formula' and 'data'

@rajib-mukherjee
Copy link

Can you please help with the error: 'float' object has no attribute 'astype' on the backward elimination method

AttributeError Traceback (most recent call last)
in ()
1 SL = 0.05
2 X_opt = X[:, [0, 1, 2, 3, 4, 5]]
----> 3 X_Modeled = backwardElimination(X_opt, SL)

in backwardElimination(x, SL)
5 for i in range(0, numVars):
6 regressor_OLS = sm.OLS(y, x).fit()
----> 7 maxVar = max(regressor_OLS.pvalues).astype(float)
8 adjR_before = regressor_OLS.rsquared_adj.astype(float)
9 if maxVar > SL:

AttributeError: 'float' object has no attribute 'astype'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment