我正在做一个二进制分类,为了平衡我的数据集,我在 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
为什么不同的机器保存列表的方式不同?