如何为4维输入输出数据集建模预测y_test,现有全连接模型调整遇阻
4分类预测建模优化方案
你的任务属于4分类任务,标签采用独热编码格式,现有模型配置不匹配分类任务要求,可按以下步骤调整:
- 输出层配置修正:输出层新增
softmax激活函数,输出4个类别的概率,概率和为1,是转换为你需要的独热格式的基础 - 损失函数替换:原MSE损失适用于回归任务,分类场景下替换为
categorical_crossentropy,适配独热编码的标签格式 - 训练&结构优化:输入特征仅4维,无需过多隐藏层,可简化结构降低过拟合风险;batch_size设为1会导致训练波动大、效率低,调整为32或64更合理
- 预测后处理:模型预测输出为4个类别的概率,取概率最大值对应的位置,转换为独热编码即可得到(1,0,0,0)、(0,1,0,0)类的预期格式
from numpy import array import numpy as np from keras.models import Sequential from keras.layers import Dense from keras.callbacks import EarlyStopping import sys import pandas as pd es = EarlyStopping(monitor='val_loss', mode='min', verbose=1, patience=10) # 此处保持你原有数据加载逻辑不变 X_train, y_train, X_valid, y_valid, X_test, y_test, tr_set_size = loaddata(filename) # 调整后的模型结构 model = Sequential() model.add(Dense(32, activation='relu', input_shape=(X_train.shape[1],))) model.add(Dense(16, activation='relu')) model.add(Dense(4, activation='softmax')) # 新增softmax输出分类概率 model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy']) hist = model.fit(X_train, y_train, epochs=100, batch_size=32, verbose=1, validation_data=(X_valid, y_valid), callbacks=[es]) result = model.evaluate(X_test, y_test) prediction_prob = model.predict(X_test) # 将概率转为独热格式的预测结果 prediction = np.eye(4)[np.argmax(prediction_prob, axis=1)] print(prediction)
内容的提问来源于stack exchange,提问作者BeTree
相关产品推荐
相关产品推荐

