为啥 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 在输出中重复它的参数的主要内容,如果未能解决你的问题,请参考以下文章
为啥构造函数用@JsonCreator注解时,它的参数必须用@JsonProperty注解?