使用 SVM 在多类分类中预测 Class
Predicting Class in Multiclass classification using SVM
In:svc1.predict([X_poly[25].reshape(1,-1))
Out:array([3], dtype=int64)
In:svc1.decision_function([X_poly[25]])
Out:array([[ 0.58348329, -0.99979492, 0.08571431, -0.99996706, -0.52397444,
0.99959056]])
In:svc1.predict_proba(X_poly[25].reshape(1,-1))
Out:array([[ 0.48373954, 0.11870606, 0.00261101, 0.39494339]])
我正在使用 rbf 内核和 'ovo' class化。我正在尝试预测数据中第 26 个样本的 class。 SVC classifier 将 class 样本预测为 3。但是,我无法理解它是如何缩小到 class 3 的,当概率表明另一种方式时。您能否也请告知 decision_function 方法输出的解释以及它如何用于预测 class.
如 documentation 所示:
The probability model is created using cross validation, so the
results can be slightly different than those obtained by predict.
Also, it will produce meaningless results on very small datasets.
我想这就是你有不同输出的原因。
至于 ovo
(一对一)决策函数,因为你的决策函数 returns 6 个值意味着你有 4 个 classes:
(n*(n-1))/2 = 6
,其中 n 是 classes 的数量。
现在介绍如何使用决策函数返回的数字来预测 class。顾名思义(一对一),它一对一地比较 classes,然后输出一个正数或负数,class 它认为是正确的。在您的情况下,由于我们有 4 个 classes,它会产生 6 个数字,代表您的 classes (1,2,3,4) 之间的比较,如下所示:[12,13,14,23,24,34]
其中在您的案例中由此决策向量表示:
[0.58348329, -0.99979492, 0.08571431, -0.99996706, -0.52397444, 0.99959056]
所以,哪个class获胜取决于数字的信号,所以在这个例子中,获胜者class是:[1,3,1,3,4,3]
,即'12'
是与 0.58348329
进行比较,因此 class '1'
获胜......等等。因此,决策函数将 class '3'
投票为您的预测,因为它是最获胜 class.
In:svc1.predict([X_poly[25].reshape(1,-1))
Out:array([3], dtype=int64)
In:svc1.decision_function([X_poly[25]])
Out:array([[ 0.58348329, -0.99979492, 0.08571431, -0.99996706, -0.52397444,
0.99959056]])
In:svc1.predict_proba(X_poly[25].reshape(1,-1))
Out:array([[ 0.48373954, 0.11870606, 0.00261101, 0.39494339]])
我正在使用 rbf 内核和 'ovo' class化。我正在尝试预测数据中第 26 个样本的 class。 SVC classifier 将 class 样本预测为 3。但是,我无法理解它是如何缩小到 class 3 的,当概率表明另一种方式时。您能否也请告知 decision_function 方法输出的解释以及它如何用于预测 class.
如 documentation 所示:
The probability model is created using cross validation, so the results can be slightly different than those obtained by predict. Also, it will produce meaningless results on very small datasets.
我想这就是你有不同输出的原因。
至于 ovo
(一对一)决策函数,因为你的决策函数 returns 6 个值意味着你有 4 个 classes:
(n*(n-1))/2 = 6
,其中 n 是 classes 的数量。
现在介绍如何使用决策函数返回的数字来预测 class。顾名思义(一对一),它一对一地比较 classes,然后输出一个正数或负数,class 它认为是正确的。在您的情况下,由于我们有 4 个 classes,它会产生 6 个数字,代表您的 classes (1,2,3,4) 之间的比较,如下所示:[12,13,14,23,24,34]
其中在您的案例中由此决策向量表示:
[0.58348329, -0.99979492, 0.08571431, -0.99996706, -0.52397444, 0.99959056]
所以,哪个class获胜取决于数字的信号,所以在这个例子中,获胜者class是:[1,3,1,3,4,3]
,即'12'
是与 0.58348329
进行比较,因此 class '1'
获胜......等等。因此,决策函数将 class '3'
投票为您的预测,因为它是最获胜 class.