可以通过对少数类进行上采样或下采样来解决不平衡回归问题。下面给出一个基于下采样的示例:
from sklearn.utils import resample
# X是特征向量,y是目标变量
# 先将数据集按照目标变量划分为少数类和多数类
X_minority = X[y == minority_class]
X_majority = X[y == majority_class]
# 下采样多数类,使得多数类数量与少数类数量相同
X_majority_downsampled = resample(X_majority,
replace=False, # 无放回采样
n_samples=len(X_minority), # 采样数量与少数类相同
random_state=42) # 设置随机种子
# 将采样后的多数类和少数类合并,重新构成数据集
X_balanced = np.concatenate((X_minority, X_majority_downsampled))
y_balanced = np.concatenate(([minority_class] * len(X_minority),
[majority_class] * len(X_majority_downsampled)))
# 然后就可以使用平衡后的数据集进行建模了