machine-learning - 使用多层感知器对不平衡数据集进行分类

标签 machine-learning tensorflow neural-network deep-learning classification

我在分类问题上遇到了麻烦。

我的训练数据中有近 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/

相关文章:

machine-learning - Tensorflow 所有变量都经过训练吗?

tensorflow - 写入和读取列表到 TFRecord 示例

python - 在 TensorFlow 中使用 tf.placeholder 时出现异常

python - 在循环中拟合具有不同 Epoch 编号的神经网络,而无需每次都重新开始

machine-learning - 在 LDA 中应用 fit_transform 时输入形状错误

machine-learning - 用于音乐的 LSTM 自动编码器 - Keras [序列到序列]

python - 神经网络 Octave 实现

c - C 语言的非收敛神经网络

lua - 在 Torch 中添加自定义损失函数

tensorflow - model.summary() 输出与模型定义不一致