支持向量机模型平均在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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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