如何将Keras模型预测输出张量追加到输入test_features张量中
实现方法
TensorFlow张量默认不可修改,无法直接在原有test_features张量中新增列,可通过转换为NumPy数组或Pandas DataFrame完成拼接,有需要时再转回张量即可,具体操作如下:
方法1:NumPy数组拼接(通用场景)
适用于不需要保留特征列名,后续还要做张量运算的场景:
import numpy as np import tensorflow as tf # 1. 把测试特征张量转为NumPy数组 test_feat_np = test_features.numpy() # 2. 若预测结果是一维数组,先调整为二维数组保证维度匹配 if len(z.shape) == 1: z = z.reshape(-1, 1) # 3. 按列拼接,预测结果作为最后一列 test_feat_with_pred_np = np.concatenate([test_feat_np, z], axis=1) # 4. 可选:转回张量格式 test_feat_with_pred_tensor = tf.convert_to_tensor(test_feat_with_pred_np)
方法2:Pandas DataFrame拼接(需要结构化数据的场景)
如果你之前用Pandas做预处理,需要保留特征列名方便后续分析,可以用这个方法:
import pandas as pd # 替换为你实际使用的特征列名列表 feature_cols = ["特征1", "特征2", "..."] # 基于特征数组和列名生成DataFrame test_df = pd.DataFrame(test_features.numpy(), columns=feature_cols) # 新增预测结果列,一一对应每行样本 test_df["prediction"] = z
特殊场景适配
- 二分类任务如果需要输出0/1标签而非概率值,可先做转换再拼接:
pred_label = (z > 0.5).astype(int)
- 多分类任务如果需要输出类别标签而非各类概率,可先取最大值索引再拼接:
pred_label = np.argmax(z, axis=1).reshape(-1, 1)
内容的提问来源于stack exchange,提问作者kikee1222
相关产品推荐
相关产品推荐

