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

如何使用已保存的Scikit-learn模型查看模型中的类别?

从已保存的Scikit-learn模型中查看类别信息

别担心,哪怕训练数据集找不到了,你照样能从已保存的模型里提取出类别相关信息,下面是具体的操作方法:

1. 先加载已保存的模型

首先用joblib把你的.sav模型文件加载进来:

import joblib

# 替换成你的模型文件实际路径
trained_model = joblib.load("your_trained_model.sav")

2. 提取模型的类别

普通分类模型(如LogisticRegression、RandomForestClassifier等)

绝大多数Scikit-learn分类模型在训练完成后,会自动把类别信息存在classes_属性里——这个属性是模型训练时从目标变量(y)中获取并保存的,哪怕训练集丢了也不会消失。直接访问就行:

model_classes = trained_model.classes_
print("模型包含的类别:", model_classes)

输出结果会是一个数组,比如二分类任务可能返回[0, 1],多分类任务可能返回['cat', 'dog', 'bird']这类形式。

如果模型是Pipeline(流水线)

如果你的模型是用Pipeline封装的(比如包含了特征工程+分类器的完整流程),那得先定位到流水线里的最后一步分类器组件,再访问它的classes_属性:

from sklearn.pipeline import Pipeline

if isinstance(trained_model, Pipeline):
    # 两种方式获取最后一步的分类器:
    # 方式1:通过索引直接取最后一步(推荐,更简便)
    final_classifier = trained_model[-1]
    # 方式2:通过组件名称获取(需要知道流水线里的组件命名)
    # final_classifier = trained_model.named_steps['classifier']  # 替换成你实际的组件名
    
    model_classes = final_classifier.classes_
    print("模型包含的类别:", model_classes)

注意事项

  • 只有分类模型才有classes_属性,如果你的模型是回归模型(比如LinearRegression),这个属性是不存在的——毕竟回归任务没有“类别”的概念。
  • 如果是多标签分类模型(比如用MultiOutputClassifier封装的),你需要遍历每个子分类器的classes_属性来获取每个输出的类别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:42:39