2012-06-08 2 views

ответ

3

В scikit-learn coef_ атрибут содержит векторы разделительных гиперплоскостей для линейных моделей. Он имеет форму (n_classes, n_features), если n_classes > 1 (multi-class one-vs-all) и (1, n_features) для двоичной классификации.

В этом примере бинарной классификации игрушек n_features == 2, следовательно w = coef_[0] - вектор, ортогональный гиперплоскости (гиперплоскость полностью определена им + перехватом).

Чтобы построить эту гиперплоскость в 2D-корпусе (любая гиперплоскость 2D-плоскости - это 1D-линия), мы хотим найти f, как в y = f(x) = a.x + b. В этом случае a является наклоном линии и может быть вычислено a = -w[0]/w[1].

+2

Почему 'a = -w [0]/w [1]'? И чтобы найти b, почему мы вычисляем '- (clf.intercept_ [0])/w [1]'. Не должно быть 'b = clf.intercept_ [0]'? –

+0

Это просто переход к общей n-мерной параметризации гиперплоскости к двумерному уравнению линии 'y = ax + b': общий w_0 x + w_1 y + w_3 = 0' может быть (w_0/w_1) x + (w_0/w_1) ' – ogrisel

+0

s/переключение/переключение с/ – ogrisel

Смежные вопросы