Проблема с imblearn: SMOTENC TypeError: '‹' не поддерживается между экземплярами 'int' и 'str'

Я использую SMOTENC для решения проблемы несбалансированной классификации.

df_train, df_test = train_test_split(input_table_1_df, test_size=0.25, stratify=input_table_1_df["Target_Variable_SX_FASCIA_1"])
    
                  ###### SMOTE ######
    # Create features table and target table
    df_x = df_train.loc[ : , df_train.columns != "Target_Variable_SX_FASCIA_1"] 
    df_y = df_train.drop(["Target_Variable_SX_FASCIA_1"], axis=1)
    
    # From pandas to numpy arrays
    from imblearn.over_sampling import SMOTENC
    
    df_X=df_x.to_numpy()
    df_Y=df_y.to_numpy()
    
    column_name_x=list(df_x.columns) 
    column_name_y=list(df_y.columns) 
    
    # Resampling
    smote_nc = SMOTENC(categorical_features=[0,1,2,3,4,5], random_state=0,sampling_strategy=.2)
    X_resampled, Y_resampled = smote_nc.fit_resample(df_X, df_Y)
    X_resampled_df= pd.DataFrame(X_resampled,columns=column_name_x)
    Y_resampled_df= pd.DataFrame(Y_resampled,columns=column_name_y)
    Training_set_Passivi_Fascia_1 = pd.concat([X_resampled_df, Y_resampled_df], axis=1)

Я получил следующую ошибку в строке:

X_resampled, Y_resampled = smote_nc.fit_resample(df_X, df_Y)

TypeError: '‹' не поддерживается между экземплярами 'int' и 'str'

Я понимаю, что дело в типах переменных, но не могу понять, как решить эту ошибку. Я уже пытался:

  1. Замените все пропущенные значения
  2. Исправьте все возможные неправильные спецификации типов переменных

Другая полезная информация: первые 6 переменных набора данных являются строковыми, остальные — двойными или целыми.

Просто спросите, нужна ли вам дополнительная информация.

Заранее спасибо.


person Francescots    schedule 17.03.2021    source источник


Ответы (1)


Было бы полезно, если бы вы могли напечатать заголовки df_x и df_y.

Что я могу сделать из этой строки

df_y = df_train.drop(["Target_Variable_SX_FASCIA_1"], axis=1)

По сути, вы отбрасываете целевую переменную и сохраняете предикторы в df_y. Я предполагаю, что Target_Variable_SX_FASCIA_1 - это имя столбца целевой переменной, поэтому оно должно быть

df_y = df_train["Target_Variable_SX_FASCIA_1"].values
person Abhishek Sahu    schedule 17.03.2021
comment
Большое спасибо. Я не понял ошибки. - person Francescots; 18.03.2021