为啥 SVC 在输出中重复它的参数

Posted

技术标签:

【中文标题】为啥 SVC 在输出中重复它的参数【英文标题】:Why SVC repeates it parameter in the output为什么 SVC 在输出中重复它的参数 【发布时间】:2018-11-26 14:08:31 【问题描述】:

我的目标是使用支持向量机对从 CNN 提取的特征进行分类。

提取的特征有一个形状(2186, 128),是一个保存在X_tr中的np数组。

Y 的形状为 (2186,) 一个数组([0, 0, 0, ..., 0, 0, 0])

将这些应用到 SVC。

输入:

from sklearn.svm import SVC
clf = SVC()
clf.fit(X_train, y)
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
    decision_function_shape='ovr', degree=3, gamma='auto', kernel='rbf',
    max_iter=-1, probability=False, random_state=None, shrinking=True,
    tol=0.001, verbose=False)

输出:

SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
  decision_function_shape='ovr', degree=3, gamma='auto', kernel='rbf',
  max_iter=-1, probability=False, random_state=None, shrinking=True,
  tol=0.001, verbose=False)

为什么将参数作为输出而不是分类?

【问题讨论】:

调用 fit() 训练估计器,然后返回训练好的 SVC。您需要使用这个经过训练的 SVC 来预测新数据,而您在任何地方都没有这样做。 谢谢,这是否意味着我的 SVC 已经过训练,我可以用它来预测测试数据? 是的,你是对的。 【参考方案1】:

您希望看到什么?您已经在训练数据上训练了分类器,现在您需要在测试数据上评估分类器。在 scikit-learn 中,您可以使用以下方法训练分类器:

clf.fit(X_train, y_train)

然后您使用经过训练的分类器进行预测:

predictions = clf.predict(X_test)

【讨论】:

谢谢,我很困惑我的 SVC 是否经过培训。我得到的输出意味着模型已经过训练。现在我可以使用这个经过训练的模型来预测数据。【参考方案2】:
from sklearn.svm import SVC
clf = SVC()
clf.fit(X_train, y)
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
    decision_function_shape='ovr', degree=3, gamma='auto', kernel='rbf',
    max_iter=-1, probability=False, random_state=None, shrinking=True,
    tol=0.001, verbose=False)

不会给出任何输出。 如果要测试分类和预测,请使用

from sklearn.svm import SVC
clf = SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
            decision_function_shape='ovr', degree=3, gamma='auto', kernel='rbf',
                max_iter=-1, probability=False, random_state=None, shrinking=True,
                    tol=0.001, verbose=False)
clf.fit(X_train, y)
pred = clf.predict(X_test)
print pred

SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
               decision_function_shape='ovr', degree=3, gamma='auto', kernel='rbf',
               max_iter=-1, probability=False, random_state=None, shrinking=True,
               tol=0.001, verbose=False)

在 SVC C 中,cache_size、class_weight 等是 SVC 采用的参数。您可以使用这些参数进行调整,就像您想将“线性”或“rbf”内核与“C:1000”一起使用。 更多信息请查看:http://scikit-learn.org/stable/modules/svm.html

【讨论】:

以上是关于为啥 SVC 在输出中重复它的参数的主要内容,如果未能解决你的问题,请参考以下文章

为啥在方法参数中使用 Final [重复]

回显shell转义参数[重复]

为啥构造函数用@JsonCreator注解时,它的参数必须用@JsonProperty注解?

为啥 shell 忽略通过变量传递给它的参数中的引号字符? [复制]

C函数中逗号分隔的返回参数[重复]

sklearn集成支持向量机svm.SVC参数说明