如何解决神经网络只能预测一类-二进制分类和平衡数据集
我的工作目标是使用基本数据作为特征来预测给定股票的三个月回报率是否会超过市场(分别为1类和0类)。这两个类别之间略有不平衡:0:7835个观测值和1:9933个观测值(分别为44.1%和55.9%)。问题是我的简单模型仅预测所有实例的肯定类。如何解决问题?我已经尝试过调整一些超参数(批量大小,学习率,层数,每层神经元数),但是我获得的最好成绩是对阳性班级的预测是99%,对于其他班级的预测是1%。
代码如下:
scaler = MinMaxScaler()
scaler.fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)
model = Sequential()
model.add(Dense(10,activation='relu',input_dim=np.array(X_train).shape[1]))
model.add(Dense(10,activation='relu'))
model.add(Dense(1,activation='sigmoid'))
model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])
history = model.fit(X_train,np.array(y_train),epochs=50)
score = model.evaluate(X_test,y_test,verbose = 1)
输入数据如下:
X_train
array([[8.22558113e-01,2.57404768e-06,1.89754460e-11,...,1.77373849e-05,5.68104337e-01,4.07611328e-04],[8.22565854e-01,2.57497415e-06,1.33213703e-11,1.77373846e-05,5.68070546e-01,4.07805946e-04],[8.22541701e-01,2.57229903e-06,1.36541830e-11,1.77373842e-05,5.30571708e-01,4.07568375e-04],[8.22567337e-01,2.57182629e-06,1.36476410e-11,5.68054845e-01,4.07615103e-04],[8.22535352e-01,2.57212835e-06,1.36486715e-11,5.68030190e-01,4.07519838e-04],[8.22535480e-01,2.57180477e-06,1.36460472e-11,1.77373837e-05,5.68007221e-01,4.07568375e-04]])
y_train
array([[0],[1],[0],[0]])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。