3

我的数据有点不平衡,所以我在做逻辑回归模型之前尝试做一个 SMOTE 算法。当我这样做时,我收到错误:KeyError: 'Only the Series name can be used for the key in Series dtype mappings.' 有人可以帮我弄清楚为什么吗?这是代码:

X = dummies.loc[:, dummies.columns != 'Count']
y = dummies.loc[:, dummies.columns == 'Count']
#from imblearn.over_sampling import SMOTE
os = SMOTE(random_state=0)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
columns = X_train.columns
os_data_X,os_data_y=os.fit_sample(X_train, y_train) # here is where it errors
os_data_X = pd.DataFrame(data=os_data_X,columns=columns )
os_data_y= pd.DataFrame(data=os_data_y,columns=['Count'])

谢谢!

4

3 回答 3

11

我自己也遇到了这个问题。事实证明,我的数据集中有一个重复的列。也许仔细检查您的数据集是否不是这种情况。

于 2020-12-15T23:34:35.873 回答
1

我实际上只是解决了这个问题!我把它们做成了矩阵:os_data_X,os_data_y=os.fit_sample(X_train.as_matrix(), y_train.as_matrix())

于 2020-12-16T18:11:08.780 回答
1

100% 正确的解决方案。

尝试先将您的 X 特征转换为数组,然后输入到 SMOTE:

sm = SMOTE()

X=np.array(X)

X, y = sm.fit_sample(X, y.ravel())

于 2021-03-23T06:19:43.153 回答