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

如何使用Python+NLTK+Scikit-learn的文本分类模型预测新数据

调用训练好的模型完成新数据集分类的实操方法

你的gs_mnnb对象在执行完fit()后已经是携带最优参数的训练完成模型,不需要额外做模型导出、重训练操作,只要严格对齐训练阶段的文本预处理规则,直接调用预测接口即可,核心原则是预测阶段的所有文本处理逻辑必须和训练阶段完全一致,绝对不能在预测数据上重新拟合模型或向量器。

具体操作步骤

  • 复用你训练阶段已经写好的tokenize、lemmatize函数,不要修改分词、词形还原的规则,避免特征空间不匹配导致准确率暴跌。你训练时使用lemma列作为模型输入,新数据集不需要做词干提取步骤,和训练阶段保持一致即可。
  • 用和读取训练集完全相同的参数加载待分类的Twitter测试数据集,确认存储评论文本的列名和训练集一致为Tweet。
  • 对新数据集的文本逐行执行分词、词形还原,生成格式和训练集完全一致的lemma特征列。
  • 直接调用gs_mnnb.predict()方法传入处理好的特征列,得到每行对应的主题分类结果,将结果写回数据集后导出即可。

可直接追加到你现有代码末尾的实现代码

# 加载待分类的测试数据集,替换为你的测试集实际路径
df_test = pd.read_csv(r'C:\Users\user_name\Downloads\Test_data.csv', delimiter=';')

# 复用训练阶段完全一致的预处理流程
df_test['tokens'] = df_test['Tweet'].map(tokenize)
df_test['lemma'] = df_test['tokens'].map(lemmatize)

# 执行预测,禁止在此处调用fit()相关方法
df_test['predicted_topic'] = gs_mnnb.predict(df_test['lemma'])

# 导出分类完成的结果文件
df_test.to_csv(r'C:\Users\user_name\Downloads\Classified_result.csv', index=False, sep=';')

# 打印前5条结果做校验
print(df_test[['Tweet', 'predicted_topic']].head())

常见场景补充

  • 单条文本预测:流程和批量预测完全一致,处理后的文本需要包裹为列表传入predict接口
    test_text = "需要分类的单条Twitter评论文本"
    processed_text = lemmatize(tokenize(test_text))
    predict_result = gs_mnnb.predict([processed_text])
    print(f"文本分类结果:{predict_result[0]}")
    
  • 模型持久化:如果不想每次打开Notebook都重新跑训练流程,可以用joblib把训练好的模型存到本地,后续直接加载使用
    import joblib
    # 保存模型
    joblib.dump(gs_mnnb, r'C:\Users\user_name\Downloads\twitter_topic_clf.model')
    # 后续加载模型,无需重新训练
    clf = joblib.load(r'C:\Users\user_name\Downloads\twitter_topic_clf.model')
    
  • 避坑提醒:不要在预测阶段修改TfidfVectorizer的任何参数,不要对向量器或模型在新数据集上重新执行fit操作,否则会覆盖训练得到的特征映射关系,导致预测结果完全失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 13:15:26