在sklearn中平均的SVM模型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在sklearn中平均的SVM模型相关的知识,希望对你有一定的参考价值。

我希望平均在不同样本但相同类别上训练的两个不同SVM的分数

# Data have the smae label x_1[1] has y_1[1] and x_2[1] has y_2[1]
# Where y_2[1] == y_1[1]
Dataset_1=(x_1,y)
Dataset_2=(x_2,y)
test_data=(test_sample,test_labels)

我们有50个班级。 dataset_1和dataset_2的相同类:

list(set(y_1))=list(set(y_2))

我尝试过:

来自sklearn.svm导入SVC

clf_1 = SVC(kernel='linear', random_state=42).fit(x_1, y)

clf_2 = SVC(kernel='linear', random_state=42).fit(x_2, y)

在做之前如何平均clf_1和clf_2分数:

predict(test_sample)

?

我想做什么?

答案

不确定我理解你的问题;要像在典型的集合中那样简单地平均得分,你应该首先分别从每个模型得到预测probabilities,然后只取其平均值:

pred1 = clf_1.predict_proba(test_sample)
pred2 = clf_2.predict_proba(test_sample)
pred = (pred1 + pred2)/2

为了获得预测概率而不是硬类,您应该使用附加参数probability=True初始化SVC。

pred的每一行都是一个长度为50的数组,与您的类一样多,每个元素代表样本属于相应类的概率。

平均后,只需取pred的argmax - 只需确保返回概率的顺序正常;根据文件:

列按排序顺序对应于类,因为它们出现在属性classes_中

由于我不确定这意味着什么,因此请对您的训练集进行一些预测检查,以确保订单正确无误。

以上是关于在sklearn中平均的SVM模型的主要内容,如果未能解决你的问题,请参考以下文章

sklearn.svm在建立好模型后怎么使用

sklearn调用SVM算法

在 sklearn 中,具有线性内核的 SVM 模型和具有 loss=hinge 的 SGD 分类器有啥区别

sklearn中SVM的实现

是否可以逐步训练 sklearn 模型(例如 SVM)? [复制]

sklearn 多类 svm 函数