You need to enable JavaScript to run this app. 如何让Sklearn的svm.SVC分类器输出二元类别的独热向量
优惠活动
大模型
产品
解决方案
定价
更多

如何让Sklearn的svm.SVC分类器输出二元类别的独热向量

实现SVC多分类预测结果转独热编码向量的方案

你可以通过以下两种常用方式实现需求:

方法1:使用Sklearn内置的LabelBinarizer转换(推荐)

直接利用Sklearn自带的标签二值化工具,自动适配你的训练集类别规则,代码示例如下:

from sklearn import svm
from sklearn.preprocessing import LabelBinarizer
import numpy as np

X_train = np.array([ [35.0,15.0], [36.0,15.5], [0,0] ]) # 训练特征
y_train = np.array([1, 2, 3]) # 训练类别
X_new = np.array([[36.2,15.0]])

# 初始化标签二值化器并拟合训练集类别
lb = LabelBinarizer()
lb.fit(y_train)

clf = svm.SVC()
clf.fit(X_train, y_train)
pred = clf.predict(X_new)
# 转换为独热编码形式
one_hot_pred = lb.transform(pred)
print(one_hot_pred)

运行输出就是你需要的结果:

array([[0, 1, 0]])

方法2:手动用Numpy生成(无需额外导入预处理类)

利用训练完成的SVC模型自带的classes_属性(存储了排序后的所有类别列表),手动构造独热向量,代码示例如下:

from sklearn import svm
import numpy as np

X_train = np.array([ [35.0,15.0], [36.0,15.5], [0,0] ]) # 训练特征
y_train = np.array([1, 2, 3]) # 训练类别
X_new = np.array([[36.2,15.0]])

clf = svm.SVC()
clf.fit(X_train, y_train)
pred = clf.predict(X_new)

# 手动构造独热向量
one_hot_pred = np.zeros(clf.classes_.shape, dtype=int)
# 找到预测类别对应的索引
pred_idx = np.where(clf.classes_ == pred[0])[0][0]
one_hot_pred[pred_idx] = 1
print(one_hot_pred)

运行输出:

array([0, 1, 0])

注意事项

如果你的类别有自定义排序需求,可以在初始化LabelBinarizer时手动指定classes参数,比如lb = LabelBinarizer(classes=[3,1,2]),就会按照你指定的类别顺序生成独热向量。

内容的提问来源于stack exchange,提问作者Red-Sky

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 06:06:03