【发布时间】:2019-06-03 12:45:16
【问题描述】:
我正在使用来自 sklearn(在 Python 中)的支持向量分类器来找到一组“0”和“1”标记数据之间的最佳边界。
见:https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html
但是,我想在围绕边界线旋转数据后执行一些分析,因此我需要返回允许我定义线开始的属性。
我执行SVC如下:
相关进口:
from sklearn import svm
import numpy as np
import matplotlib.pyplot as plt
我将分类器定义为:
clf = svm.SVC(kernel='linear',C = 1e-3 ,class_weight='balanced')
然后适合训练数据:
clf.fit(f_train, labels_train)
因此可以使用以下方法查看线性类边界:
plt.figure()
ax = plt.gca()
xlim = ax.get_xlim()
ylim = ax.get_ylim()
xx = np.linspace(xlim[0], xlim[1], 30)
yy = np.linspace(ylim[0], ylim[1], 30)
YY, XX = np.meshgrid(yy, xx)
xy = np.vstack([XX.ravel(), YY.ravel()]).T
Z = clf.decision_function(xy).reshape(XX.shape)
ax.contour(XX, YY, Z, colors='k', levels=[-1, 0, 1], alpha=0.5,
linestyles=['--', '-', '--'])
见于:https://scikit-learn.org/stable/auto_examples/svm/plot_separating_hyperplane.html
但是调用时:
clf.support_vectors_.shape
如果尝试将线性边界描述为输出具有形状 (4485, 2),我不确定如何将输出解释为相关的
任何有关返回允许我定义边界线的帮助的帮助将不胜感激!
【问题讨论】:
-
您的要求我不清楚。你想得到边界线吗? .decision_function() 将给出与该边界线的距离。如果你给一个乱七八糟的网格,你可以得到边界线本身。
-
感谢您的回复。我正在尝试找到可以显式定义计算边界线的任何方法,因此我需要到达 y = mx + c 并且我认为使用支持向量可能是这种方式
标签: python vector scikit-learn svm