2016-12-21 1 views
0

Я нашел это действительно классный ноутбук на SVM:Участок максимальной рентабельностью гиперплоскость в 3-пространстве с Python

https://github.com/jakevdp/sklearn_tutorial/blob/master/notebooks/03.1-Classification-SVMs.ipynb

Но был немного разочарован, потому что не показывает, как построить максимум -margin в 3-пространстве. Я старался изо всех сил, но не имеют ни малейшего представления о том, как это сделать ... Например, я хотел бы построить его на следующий reprsentation (который взят из записной книжки):

enter image description here

Также , если бы suport векторы могли быть окружены, это был бы херес сверху.

ответ

2

Это очень хороший вопрос, однако предоставленный ноутбук на самом деле «лжет». Это не то, как работает ядро, и хотя эта визуализация классная, это не то, что происходит «внутри SVM». Давайте отложим это в сторону и сосредоточимся на том, как построить гиперплоскость 3D-разделения в этом проецируемом пространстве (что не Проецируемое пространство RBF).

Все, что вам нужно сделать, это:

  1. Fit линейный SVM к 3D-данных, используемых для этого участка.
  2. Извлечение веса (clf.coefs_) и смещения (clf.intercept_)
  3. Plot 3d hyperplane с нормальным (clf.coefs_) и расстояние от начала координат (clf.intercept_)
+0

Thx много lejlot, я m застрял на шаге 3, хотя. У меня есть 2 значения для 'clf.coefs_' и один для' clf.intercept_', когда мне нужно ввести 3 для нормальных (a, b, c) и 3 для точки (x, y, z), согласно ссылке вы отправили. – crocefisso

+0

вам нужно поместить на данные 3D, которые вы построили, в вашем случае x, y, k (x, y), таким образом, у вас будет ** три ** coefs – lejlot

+0

Вы полностью правы thx, 'clf.coefs_ 'предоставляет 3 значения, а не 2. Благодаря вашей помощи мне удалось [построить гиперплоскость] (https://s23.postimg.org/w1bzmkg7v/index.png). – crocefisso

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