2017-08-26 1 views
3

ための決定境界を取得: http://scikit-learn.org/stable/auto_examples/svm/plot_separating_hyperplane.html次の例ではSVM

Iピクチャに示す(線)決定境界の係数を取得したいです。 しかし、上記の行を取得した決定境界ではありません

clf.coef_ 

戻り、私は間違っていないよ場合、式

y = -0.83806387 * x - 0.2539717 

の行を表し、

[[-0.2539717 -0.83806387]] 

への呼び出しこの例ではcoef_は正確に何であり、どのようにして線形決定境界の式を得ることができますか?

答えて

2

線形モデルの決定境界線の式を得るには、coef_intercept_の両方を取得する必要があります。また、SVCを使用しているので、複数の決定境界が存在することにも注意してください。ライン式のように構築することができ

w0intercept_から得られる

y = w0 + w1 * x1 + w2 * x2 + ...

w1以降coef_で発見され、以降x1とは、あなたの機能です。

たとえば、このコードでは、各決定境界の式を印刷する方法を示します。この例では

from sklearn import svm 
import numpy as np 

clf = svm.SVC(kernel="linear") 

X = np.array([[1, 2], [3, 4], [5, 1], [6, 2]]) 
y = np.array(["A", "B", "A", "C"]) 

clf.fit(X, y) 

for (intercept, coef) in zip(clf.intercept_, clf.coef_): 
    s = "y = {0:.3f}".format(intercept) 
    for (i, c) in enumerate(coef): 
     s += " + {0:.3f} * x{1}".format(c, i) 

    print(s) 

、ラインがあると判定された:

y = 2.800 + -0.200 * x0 + -0.800 * x1 
y = 7.000 + -1.000 * x0 + -1.000 * x1 
y = 1.154 + -0.462 * x0 + 0.308 * x1 

出典:http://scikit-learn.org/stable/modules/linear_model.html

1

あなたは線形プロット、すなわちY = AX + Bを描きたいなら、あなたは、コード

tmp = clf.coef_[0] 
a = - tmp[0]/tmp[1] 

b = - (clf.intercept_[0])/tmp[1] 

xx = np.linspace(xlim[0], xlim[1]) 
yy = a * xx + b 
plt.plot(xx, yy) 

のチャンク・ホープ、このことができます下に使用することができます!