NLP机器学习预测Python代码:将文件输出改为终端打印及fmt参数使用
解决方法:替换
np.savetxt为终端打印输出 你原来用np.savetxt('test_result.txt', sequences, fmt='%s')是把每个字符串序列按行写入文件,fmt='%s'的作用是指定每个元素以字符串格式输出。要改成终端打印,其实不需要依赖numpy的函数,直接遍历序列打印就行,效果和原代码的文件输出完全一致。
方案1:生成序列时直接打印(最简洁)
如果不需要保留sequences列表,直接在循环里打印每个生成的序列即可,省去列表存储的步骤:
for prediction in predictions: # 生成预测序列(和你原来的代码一致) sequence = ' '.join([y_ix_to_word[index] for index in prediction if index > 0]) # 直接打印到终端,对应原fmt='%s'的字符串输出效果 print(sequence)
方案2:保留sequences列表后统一打印
如果还要保留sequences列表做其他处理,可以在生成完成后遍历列表打印:
# 先按原逻辑生成sequences列表 sequences = [] for prediction in predictions: sequence = ' '.join([y_ix_to_word[index] for index in prediction if index > 0]) sequences.append(sequence) # 统一打印所有序列,每个序列占一行,和原文件输出格式一致 for seq in sequences: print(seq)
额外:自定义格式化输出
如果想给打印结果加更清晰的标识(比如预测编号),可以用Python的f-string做格式化,比如:
for idx, seq in enumerate(sequences, start=1): print(f"第{idx}个预测结果:{seq}")
为什么不需要fmt参数?
原代码里的fmt='%s'是告诉numpy将每个元素按字符串格式写入文件,而当你直接print字符串时,Python默认就会输出完整的字符串内容,和%s的效果完全匹配。只有当你需要打印非字符串类型(比如数字、数组)并指定格式时,才需要手动添加格式化规则。
内容的提问来源于stack exchange,提问作者black snow
相关产品推荐
相关产品推荐

