machine-learning - OneVsRestClassifier(svm.SVC()).predict() 给出连续值

标签 machine-learning scikit-learn svm multilabel-classification

我尝试在数据集上使用 y_scores=OneVsRestClassifier(svm.SVC()).predict() 就像 iris 和 titanic 一样。问题是我得到的 y_scores 是连续值。就像我得到的 iris 数据集一样:

[[ -3.70047231  -0.74209097   2.29720159]
 [ -1.93190155   0.69106231  -2.24974856]
.....

我正在将 OneVsRestClassifier 用于其他分类器模型,例如 knn、randomforest、朴素贝叶斯,它们以以下形式给出适当的结果

[[ 0  1   0]
 [ 1   0  1]...

关于鸢尾花数据集的等。请帮忙。

最佳答案

这根本不是真的。

>>> from sklearn.multiclass import OneVsRestClassifier
>>> from sklearn.svm import SVC
>>> from sklearn.datasets import load_iris
>>> iris = load_iris()
>>> clf = OneVsRestClassifier(SVC())
>>> clf.fit(iris['data'], iris['target'])
OneVsRestClassifier(estimator=SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0, degree=3, gamma=0.0,
  kernel='rbf', max_iter=-1, probability=False, random_state=None,
  shrinking=True, tol=0.001, verbose=False),
          n_jobs=1)
>>> print clf.predict(iris['data'])
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2]

也许您改为调用 decision_function (这将与您的输出维度匹配,因为预测应该返回向量,而不是矩阵)。然后,SVM返回到每个超平面的有符号距离,从数学角度来看,这就是它的决策函数。

关于machine-learning - OneVsRestClassifier(svm.SVC()).predict() 给出连续值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37113524/

相关文章:

python - 如何在 Keras、Tensorflow 中导入 LSTM

linux - Alize LIA_RAL 安装

python - GridSearchCV 如何计算训练分数?

r - ROC曲线反向绘制的特异性

machine-learning - 为什么我在使用 Wakari 'print(digits.images(0))' 数据集时在 'digits' 处收到错误

statistics - 分类时计算置信度

machine-learning - 卷积神经网络中的旋转等方差?

machine-learning - 决策树的深度取决于什么?

python - 如何处理python scikit NMF中的缺失值

machine-learning - 文本分类 - 如何找到对决策影响最大的特征