我在分类问题上遇到了麻烦。
我的训练数据中有近 40 万个带有两个标签的向量,我想训练 MLP,将数据分为两类。 然而,数据集非常不平衡。其中 95% 的标签为 1,其他标签为 0。准确率随着训练的进行而增长,达到 95% 后停止。我猜这是因为网络将所有向量的标签预测为 1。
到目前为止,我尝试以 0.5 的概率丢弃图层。但是,结果是一样的。有什么办法可以提高准确率吗?
最佳答案
我认为处理不平衡数据的最佳方法是为您的类(class)使用权重。例如,您可以对类别进行加权,以使每个类别的权重总和相等。
import pandas as pd
df = pd.DataFrame({'x': range(7),
'y': [0] * 2 + [1] * 5})
df['weight'] = df['y'].map(len(df)/2/df['y'].value_counts())
print(df)
print(df.groupby('y')['weight'].agg({'samples': len, 'weight': sum}))
输出:
x y weight
0 0 0 1.75
1 1 0 1.75
2 2 1 0.70
3 3 1 0.70
4 4 1 0.70
5 5 1 0.70
6 6 1 0.70
samples weight
y
0 2.0 3.5
1 5.0 3.5
关于machine-learning - 使用多层感知器对不平衡数据集进行分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46759662/