如何解决在执行SMOTE,python之前,如何删除少于几个示例的少数类
我有一个数据集,其中包含100列作为从word2vec生成的特征向量(100D特征向量),我的目标是我数据集中向量的每一行的分类变量。现在,我的数据集共有大约1000个不同的类别变量,行数大约为75000。数据集的问题在于它高度不平衡,除了前200个类别变量之外,其余所有类的样本都很少,{ {1}}。
现在,我想使用SMOTE对这些数据执行过采样,以生成少数类的更多示例。 some classes have less than 6 samples
,因为这是SMOTE给出值错误的地方。有什么办法可以在代码中处理它,以便在执行SMOTE时可以忽略少于6个样本的那些类?这样做是否有助于解决我目前面临的错误?
代码和错误消息供参考:
I want to ignore the classes that have less than 6 sample examples
尽管我已设置k_neighbors = 1
,但目前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)
出现此错误
对此的任何帮助将不胜感激
解决方法
您可以使用以下命令查看每个班级的唯一条目,并对它们进行计数:df['VARIABLE'].value_counts(dropna=False)
(如果您不想显示NaN,请旋转dropna=True
)。
然后,您可以自己创建算法,设置阈值,并自动删除出现的阈值以下的类,或者将其放入新的大类“ Other”中
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。