我有一个非常简单的1D分类问题:值列表[0,0.5,2]及其关联的类[0,1,2].我想获得这些类之间的分类界限.
调整iris example(用于可视化目的),摆脱非线性模型:
X = np.array([[x, 1] for x in [0, 0.5, 2]])
Y = np.array([1, 0, 2])
C = 1.0 # SVM regularization parameter
svc = svm.SVC(kernel='linear', C=C).fit(X, Y)
lin_svc = svm.LinearSVC(C=C).fit(X, Y)
给出以下结果:
LinearSVC正在返回垃圾(为什么?),但带有线性内核的SVC工作正常.所以我想得到边界值,你可以用图形猜测:~0.25和~1.25.
这就是我失去的地方:svc.coef_返回
array([[ 0.5 , 0. ],
[-1.33333333, 0. ],
[-1. , 0. ]])
而svc.intercept_返回数组([ – 0.125,1.666666667,1.]).
这不明确.
我一定是在傻傻丢失,如何获得这些价值观?它们似乎很容易计算,迭代x轴找到边界会很荒谬……
解决方法:
给定权重W = svc.coef_ [0]和截距I = svc.intercept_,决策边界是线
y = a*x - b
同
a = -W[0]/W[1]
b = I[0]/W[1]
标签:python,scikit-learn,classification,svm
来源: https://codeday.me/bug/20190725/1530670.html