使用RandomUnderSampler处理3D数组时遇维度错误求助
解决RandomUnderSampler处理3D特征数组的维度错误问题
问题原因
imblearn库的采样器(包括RandomUnderSampler)仅支持2D特征数组(格式为(样本数量, 特征数量)),而你的特征是3D结构(276216, 101, 4),直接传入会触发维度不匹配的报错。
解决步骤
核心思路是先将3D特征转换为2D完成采样,再恢复回3D结构:
- 将3D特征展平为2D
把每个样本的(101,4)子数组展平为一维,得到2D数组:
X_2d = train['X'].reshape(train['X'].shape[0], -1)
- 执行欠采样
注意使用fit_resample方法(而非fit)来获取采样后的数据:
from imblearn.under_sampling import RandomUnderSampler undersample = RandomUnderSampler(sampling_strategy='majority') # 若标签是二维格式,可先转为一维更稳妥 y_flat = train['y'].ravel() X_2d_under, y_train_under = undersample.fit_resample(X_2d, y_flat)
- 恢复3D特征结构
将采样后的2D数组重塑回原3D格式:
X_train_under = X_2d_under.reshape(X_2d_under.shape[0], 101, 4)
验证结果
检查处理后的维度是否符合预期:
print(X_train_under.shape) # 输出格式:(采样后的样本数, 101, 4) print(y_train_under.shape) # 输出格式:(采样后的样本数,)
内容的提问来源于stack exchange,提问作者upendra
相关产品推荐
相关产品推荐

