我有一个数据集,其中包含 100 列作为从 word2vec 生成的特征向量(100D 特征向量),我的目标是我的数据集中每一行向量的分类变量。现在,我的数据集总共有大约 1000 个不同的分类变量,行数约为 75000。数据集的问题是它高度不平衡,除了前 200 个分类变量之外,其余所有类的样本都很少,而且some classes have less than 6 samples
.
现在我想使用 SMOTE 对这些数据执行过采样,以便为少数类生成更多示例。I want to ignore the classes that have less than 6 sample examples
因为那是 SMOTE 给出值错误的地方。有什么办法,我可以在代码中处理它,以便在执行 SMOTE 时忽略那些样本少于 6 个的类?这样做有助于解决我目前面临的错误吗?
代码和错误消息供参考:
dataset = pd.read_csv(r'C:\vectors.csv')
X = dataset.iloc[:, 3:103]
y = dataset.iloc[:, 0]
from imblearn.over_sampling import SMOTE
smote = SMOTE(k_neighbors = 1)
smote_Xtrain, smote_y_train = smote.fit_sample(X, y)
ValueError: Expected n_neighbors <= n_samples, but n_samples = 1, n_neighbors = 2
尽管我已设置 k_neighbors = 1,但我目前收到此错误
对此的任何帮助将不胜感激