Using MultiLabelBinarizer for SMOTE
You can't fit X_train into y_train without encoding.
Try something like this for features:

from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder(handle_unknown='ignore')
enc.fit(X)


and label encoding for labels.