如何将LSTM情感分类的预测标签、真实标签及推文导出为CSV文件
解决方案
你需要对原有代码的数据集拆分、预测结果处理、导出逻辑3部分进行调整,具体修改如下:
1. 提前定义标签映射关系
在标签编码的代码段后新增映射字典,方便后续数值标签转文本标签:
label_map = {0: 'anger', 1: 'fear', 2: 'joy', 3: 'sadness'}
2. 调整数据集拆分逻辑
原有拆分仅保留了模型输入特征和标签,需要同步拆分原始数据集拿到测试集对应的推文内容,使用相同的random_state保证顺序完全对应:
# 原有特征、标签拆分逻辑不变 X_train, X_test, y_train, y_test = train_test_split(tweets,labels, test_size=0.25, random_state=0) # 新增:同步拆分原始数据集,获取测试集对应的原始推文和真实标签 _, test_raw_df = train_test_split(df, test_size=0.25, random_state=0)
3. 处理预测结果并导出完整CSV
在拿到predictions预测概率后,新增标签转换逻辑,拼接所有需要的字段后导出:
# 转换预测、真实数值标签为文本标签 pred_numeric = np.argmax(predictions, axis=1) pred_labels = [label_map[i] for i in pred_numeric] true_numeric = np.argmax(y_test, axis=1) true_labels = [label_map[i] for i in true_numeric] # 构建导出用DataFrame export_result = pd.DataFrame() # 加入推文内容 export_result['clean_tweet_no_stop'] = test_raw_df['clean_tweet_no_stop'].values # 加入真实分类标签 export_result['true_label'] = true_labels # 加入模型预测分类标签 export_result['pred_label'] = pred_labels # 可选:保留四类情感的预测概率,不需要可删除以下4行 export_result['prob_anger'] = predictions[:,0] export_result['prob_fear'] = predictions[:,1] export_result['prob_joy'] = predictions[:,2] export_result['prob_sadness'] = predictions[:,3] # 导出CSV,使用utf-8-sig编码避免阿拉伯语内容乱码 export_result.to_csv('full_prediction.csv', index=False, encoding='utf-8-sig')
注意事项
原有代码中加载模型的变量名为model,但后续评估、预测用的是model1,请注意统一变量名避免运行报错。
内容的提问来源于stack exchange,提问作者Bashar
相关产品推荐
相关产品推荐

