我正在用CNNs做二进制分类,数据是不平衡的,其中正医学图像:负医学图像= 0.4 : 0.6。因此,我想在训练之前使用SMOTE对阳性的医学图像数据进行过采样。但是,数据的维度是4D (761,64,64,3),这会导致错误
Found array with dim 4. Estimator expected <= 2所以,我重塑了我的train_data:
X_res, y_res = smote.fit_sample(X_train.reshape(X_train.shape[0], -1), y_train.ravel())它工作得很好。在将其提供给CNNs之前,我通过以下方法重塑它:
X_res = X_res.reshape(X_res.shape[0], 64, 64, 3)现在,我不确定这是不是过采样的正确方式,重塑操作符会改变图像的结构吗?
发布于 2019-11-21 11:51:10
我也遇到过类似的问题。我使用了重塑功能来重塑图像的形状(基本上是扁平化图像)
X_train.shape
(8000, 250, 250, 3)
ReX_train = X_train.reshape(8000, 250 * 250 * 3)
ReX_train.shape
(8000, 187500)
smt = SMOTE()
Xs_train, ys_train = smt.fit_sample(ReX_train, y_train)虽然这种方法慢得可怜,但有助于提高性能。
发布于 2019-11-21 12:12:05
当你做8000x250* 250 *3的重塑时,learning.
发布于 2021-09-18 12:51:14
将展平的图像重塑为RGB图像
from imblearn.over_sampling import SMOTE
sm = SMOTE(random_state=42)
train_rows=len(X_train)
X_train = X_train.reshape(train_rows,-1)
(80,30000)
X_train, y_train = sm.fit_resample(X_train, y_train)
X_train = X_train.reshape(-1,100,100,3)
(>80,100,100,3)https://stackoverflow.com/questions/53666759
复制相似问题