微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

imblearn 的问题:SMOTENC“类型错误:‘int’和‘str’的实例之间不支持‘<’”

如何解决imblearn 的问题:SMOTENC“类型错误:‘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,df_Y)

类型错误:“int”和“str”的实例之间不支持

我能理解这是变量类型的问题,但我不知道如何解决这个错误。 我已经尝试过:

  1. 替换所有缺失值
  2. 修复所有可能的变量类型错误说明

其他有用的信息: 数据集的前 6 个变量为字符串,其他为双精度或整数。

请问您是否需要更多信息。

提前致谢。

解决方法

如果你能打印 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。