Oversampling: SMOTE for binary and categorical data in Python
So as per documentation SMOTE doesn't support Categorical data in Python yet, and provides continuous outputs. 
You can instead employ a workaround where you convert the categorical variables to integers and use SMOTE.
Then use np.round(X_train[categorical_variables]) to convert them back to the respective categorical values.
I would like to apply SMOTE to unbalanced dataset which contains binary, categorical and continuous data.  Is there a way to apply SMOTE to binary and categorical data?