Mihayloспасибо, нашел, вот, что получилось:
![$
w_1x_1 + w_2x_2 + b = 0.5
$ $
w_1x_1 + w_2x_2 + b = 0.5
$](https://dxdy-02.korotkov.co.uk/f/5/9/8/5982ce3c388fc23c57735326b7e7a1d582.png)
![$
x_2 = \frac{0.5 - w_1x_1 - b}{w_2}
$ $
x_2 = \frac{0.5 - w_1x_1 - b}{w_2}
$](https://dxdy-04.korotkov.co.uk/f/b/b/d/bbd09a671569adf1b3c4e2f8397c451182.png)
Я сегодня об этом думал, но забыл, что там не ступенька (sign), а что-то другое. Начал визуализировать прямую - пересечение с плоскостью
![$y = 0$ $y = 0$](https://dxdy-02.korotkov.co.uk/f/5/4/e/54e8ccb1d0f9464f43edf5b1665c976382.png)
, а она работала через раз (иногда перекрывала объекты), теперь ясно почему.
Может, кого-то это ещё заинтересует, поэтому оставлю код и скрины.
from matplotlib import pyplot as plt
import numpy as np
from sklearn.linear_model import SGDClassifier
def lin_log(w, b):
def func(x):
return (0.5 - w[0] * x - b) / w[1]
return func
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
y = np.array([0, 0, 0, 1])
model = SGDClassifier()
model.fit(X, y)
w = model.coef_[0]
b = model.intercept_[0]
x_min, x_max = -2, 2
y_min, y_max = -2, 2
fig, ax = plt.subplots()
linear = lin_log(w, b)
grid_x = np.linspace(-3, 3, 200)
grid_y = linear(grid_x)
ax.plot(grid_x, grid_y)
ax.scatter(X[:, 0], X[:, 1])
ax.grid(which='major',
color='k')
ax.axis([x_min, x_max, y_min, y_max])
plt.show()
-- 14.04.2020, 02:19 --Mihayloтолько сейчас обратил внимание, везде пишут по-разному, то
![$+b$ $+b$](https://dxdy-01.korotkov.co.uk/f/8/a/b/8ab65fd615089212c42b4c5d37773dd282.png)
, то
![$-b$ $-b$](https://dxdy-01.korotkov.co.uk/f/8/9/4/89471f8d0b722d6b91995b7a2489f15b82.png)
. Я, наверное, что-то не понимаю, но это несколько разные вещи, нет? То есть смещения получаются одинаковые в обоих случаях, но разные по знаку, разве нет?