You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将RNN/NLP模型预测结果转换为Kaggle竞赛CSV格式遇阻求助

解决步骤

1. 先正确预处理测试数据

直接把test.csv喂给model.predict会失败,因为测试文本需要和训练数据做完全一致的预处理操作(分词、转序列、长度填充)。假设你训练时用了Tokenizer,按以下流程处理测试数据:

import pandas as pd
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences

# 加载测试集
test_df = pd.read_csv("./test.csv")

# 复用训练时的Tokenizer(必须和训练阶段的词汇表完全一致,不能重新训练)
tokenizer = Tokenizer(num_words=NUM_WORDS)
# 用训练数据的文本拟合tokenizer(如果之前没保存tokenizer的话)
train_df = pd.read_csv("./bbc-text.csv")
tokenizer.fit_on_texts(train_df['text'])

# 对测试文本执行和训练数据相同的预处理
test_sequences = tokenizer.texts_to_sequences(test_df['text'])
test_padded_seq = pad_sequences(test_sequences, maxlen=MAXLEN)

2. 执行预测并转换为类别标签

预处理完成后即可预测,再把模型输出的softmax概率转换为竞赛要求的类别名称:

# 生成预测结果
predictions = model.predict(test_padded_seq)

# 取每个样本概率最大的类别索引
predicted_label_indices = predictions.argmax(axis=1)

# 映射回原始类别名称(根据你训练时的标签编码规则调整)
label_mapping = {0: 'business', 1: 'entertainment', 2: 'politics', 3: 'sport', 4: 'tech'}
predicted_categories = [label_mapping[idx] for idx in predicted_label_indices]

3. 生成符合竞赛要求的CSV文件

参照竞赛提供的sample_submission.csv格式,用Pandas生成提交文件:

# 构建提交DataFrame(确保列名、顺序和示例一致)
submission_df = pd.DataFrame({
    'id': test_df['id'],  # 若test.csv无id列,可改用test_df.index
    'category': predicted_categories
})

# 保存为CSV,不要保留索引
submission_df.to_csv('./submission.csv', index=False)

关键注意事项

  • 预处理逻辑必须和训练阶段完全对齐,包括Tokenizer词汇表、MAXLEN参数,否则预测结果无效。
  • 标签映射要和训练时的编码规则对应,比如你用LabelEncoder转的数字标签,这里要反向还原。
  • 提交的CSV格式必须和竞赛示例文件一致,列名、顺序不能出错。

内容的提问来源于stack exchange,提问作者FastBoi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 22:07:44