支持向量机模型平均在sklearn中

我想对在不同样本上训练但类别相同的两个SVM的得分进行平均

# 数据有相同的标签 x_1[1] 有 y_1[1] 并且 x_2[1] 有 y_2[1]# 其中 y_2[1] == y_1[1]Dataset_1=(x_1,y)Dataset_2=(x_2,y)test_data=(test_sample,test_labels)

我们有50个类别。数据集1和数据集2的类别相同:

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

我尝试过的方法:

from sklearn.svm import 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)

?

我想做的是什么?


回答:

我不确定我是否理解你的问题;要像典型的集成学习那样简单地平均得分,你应该首先从每个模型分别获取预测概率,然后只需取它们的平均值:

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

为了获得预测概率而不是硬类别,你应该在初始化SVC时使用额外的参数probability=True

pred的每一行将是一个长度为50的数组,与你的类别数量相同,每个元素代表样本属于相应类别的概率。

在平均后,只需取pred的argmax – 但要确保返回的概率的顺序是正确的;根据文档:

列对应于属性classes_中按排序顺序出现的类别

由于我不完全确定这意味着什么,请在训练集上运行一些预测检查,以确保顺序是正确的。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注