sklearn中的SVM模型平均

SVM model averaging in sklearn

l 想对在不同样本但相同 类

上训练的两个不同 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

为了获得预测概率而不是硬 classes,您应该使用附加参数 probability=True.

初始化 SVC

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

平均后,简单取pred的argmax——只要确保返回概率的order就OK即可;根据文档:

The columns correspond to the classes in sorted order, as they appear in the attribute classes_

由于我不太确定这意味着什么,运行 对您的训练集进行一些预测检查,以确保顺序正确。