在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 模型和具有 loss=hinge 的 SGD 分类器有啥区别