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

如何获取LinearSVC文档分类中的分类判定阈值数值?

获取LinearSVC的判定数值(决策函数值)

嘿,这个问题我太熟了!你说的那个用来判定类别的“判定数值”,在scikit-learn的LinearSVC里其实就是模型输出的决策函数值——它代表了样本到分类超平面的距离(经过模型内部缩放后的结果),完全对应你提到的「<-1归为A类、>1归为B类」这类判定逻辑。

具体怎么获取?

训练好你的LinearSVC模型后,别用predict()(它直接给你分类结果),而是调用decision_function()方法,就能拿到每个样本对应的原始判定数值:

  • 对于二分类任务,这个方法会返回一个一维数组,每个元素就是单个样本的决策值;
  • 对于多分类任务,会返回二维数组,每一行对应一个样本,每一列对应一个类别的决策值。

举个实际代码例子

假设你用文本分类的场景,代码大概是这样:

from sklearn.svm import LinearSVC
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.pipeline import make_pipeline

# 模拟你的文档数据和标签
train_docs = ["人工智能入门教程", "Python编程技巧", "机器学习实战", "前端开发指南"]
train_labels = [0, 1, 0, 1]  # 0代表技术教程类,1代表编程技巧类

# 构建文本分类管道(TF-IDF向量化 + LinearSVC分类器)
text_clf = make_pipeline(TfidfVectorizer(), LinearSVC())
text_clf.fit(train_docs, train_labels)

# 对新文档获取判定数值
test_doc = ["深度学习优化方法"]
decision_values = text_clf.decision_function(test_doc)

print(f"判定数值:{decision_values[0]}")
# 输出可能是类似 -1.2(归为A类)或者 1.5(归为B类)的数值

补充说明

LinearSVC默认的决策边界是决策值>0时归为正类,但如果你遇到的是<-1/>1的判定逻辑,可能是业务上额外做了阈值调整,或者模型使用了特定的参数(比如dual=False之类的),但不管怎样,decision_function()返回的就是你需要的原始判定数值,你可以基于这个值自己定义分类阈值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:13:09