sklearn LinearSVC和CalibratedClassifierCV的预测之间的不匹配

时间:2020-06-19 05:28:27

标签: python scikit-learn svm

我正在使用LinearSVC模型在5个类别之间进行预测,并使用CalibratedClassifierCV模型获取每个类别的“概率”。这是我对模型的定义:

<?php
   $f = fopen("text" . date("H_i_s") .".txt","w");
   fwrite($f,"test");
   fclose($f);
?>

从理论上讲,我的猜测是“模型”和“ clf”会做出类似的预测。在大多数情况下(可能是98%),它们是,但是在某些情况下(我无法提供可复制的代码),它们不是,所以我的问题只是理论上的。

当我跑步时:

from sklearn.calibration import CalibratedClassifierCV
from sklearn.svm import LinearSVC

model = LinearSVC()
clf = CalibratedClassifierCV(model,cv="prefit", method="sigmoid")
model.fit(X_train, y_train)
clf.fit(X_train, y_train)

它们是相同的。但是当我跑步时:

print(model.classes_)
print(clf.classes_)

结果是:

print(model.decision_function(X_test))
print(clf.decision_function(X_test))

也就是说-“模型”对于类别2获得最高的“权重”,而“ clf”对于类别1获得最高的概率。因此,这两个模型给出了不同的预测。我对Stackoverflow的解释是,“ clf”应该只是“模型”中决策函数值的S形,因此权重最高的类(来自模型)也应该具有最高的概率(来自clf) 。情况似乎并非如此,所以如果有人知道原因-请向我解释!

编辑: 这也是来自model和clf的.get_params()输出:

array([-0.17743171, -0.10924828, -1.00177102, -0.88501918, -0.93835179])
array([0.68707567, 0.28820641, 0.00613415, 0.01067078, 0.00791299])

0 个答案:

没有答案