我正在使用python和Keras库构建分类ANN。我正在使用3种不同类别的不平衡数据集训练NN。第1类大约是第2类和第3类的7.5倍。作为补救措施,我采纳了这个stackoverflow答案的建议,并按如下方式设置我的类权重:
class_weight = {0 : 1,
1 : 6.5,
2: 7.5}
Run Code Online (Sandbox Code Playgroud)
但是,这就是问题所在:人工神经网络正在以相同的速度预测3个班级!
因为数据集,这是没有用的不平衡,并预测为各自具有33%的几率是不准确的结果。
问题是:我该如何处理不平衡的数据集,以使ANN不会每次都预测1类,而且还使得ANN不会以相同的概率预测这些类?
这是我正在使用的代码:
class_weight = {0 : 1,
1 : 6.5,
2: 7.5}
# Making the ANN
import keras
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dropout
classifier = Sequential()
# Adding the input layer and the first hidden layer with dropout
classifier.add(Dense(activation = 'relu',
input_dim = 5,
units = 3,
kernel_initializer = 'uniform'))
#Randomly drops …Run Code Online (Sandbox Code Playgroud)