0

我正在做一个二进制分类,为了平衡我的数据集,我在 python 中实现了 sklearn 的 SMOTE()。

在我的本地笔记本电脑中,一切运行良好,但是当我在 Google Colab 中运行它时,出现以下错误:

'''IndexError: 只有整数、切片 ( :)、省略号 ( ...)、numpy.newaxis ( None) 和整数或布尔数组是有效的索引'''

在 X_train_new 变量的计算中:

                for score in scoring_dict.keys():
                    print (score)
                    X_train_new = X_train[scoring_dict[score][feature_tag]]

我的代码如下:

            ## Data Selection
            X_train = X.loc[(X[dx_option]==labels[0]) | (X[dx_option]==labels[1]), features]
            y_train = X.loc[(X[dx_option]==labels[0]) | (X[dx_option]==labels[1]), dx_option]

            ## Get features values ...
            in_name = 'indata.csv'
            in_path = os.path.join(save_path,in_name)
            in_label = 'inlabel.csv'
            in_pathlabel = os.path.join(save_path,in_label)
            indata = pd.DataFrame(data=X_train)
            inlabel=pd.DataFrame(y_train)
            indata.to_csv(in_path,  index=False)
            inlabel.to_csv(in_pathlabel, index=False)
            ## end of test


            smote_name = 'smote.csv'
            smote_path = os.path.join(save_path,smote_name)
            smote_label = 'smotelabel.csv'
            smote_pathlabel = os.path.join(save_path,smote_label)

            ## Data Augmentation techniques
            # SMOTE 
            sm = SMOTE(random_state=42)
            # BORDERLINE-SMOTE

            #sm =  BorderlineSMOTE(random_state=42)

            X_trains, y_trains = sm.fit_resample(X_train, y_train)
            smotedata = pd.DataFrame(data=X_trains)
            smotedatalabel=pd.DataFrame(y_trains)

            smotedata.to_csv(smote_path,  index=False)
            smotedatalabel.to_csv(smote_pathlabel, index=False)

我保存了 X_train 和 y_train 以检测初始 X_train 和使用 SMOTE 计算的 X_trains 之间的差异。我发现在 Google Colab 中我得到以下文件(一个示例):

         0     1      2
   0   0.232 2.545  0.443
   1   0.565 1.567  0.235

在我的笔记本电脑中,我得到:

           area   volume  tt_feature 
   0      0.232   2.545  0.443
   1      0.565   1.567  0.235

为什么不同的机器保存列表的方式不同?

4

0 回答 0