Я думаю, что вижу ошибку, хотя немного трудно быть уверенным, потому что код, который вы продемонстрировали, является неполным, и вы путаете логистика c с регрессией и SVM. Для уточнения отвечу за логистику c регресс. Имея это в виду, формула, которую вы используете для построения границы решения, неверна.
Формула для логистики c регрессия:
Мы определяем границу решения как значения x_1 и x_2, такие что h (x) равно 0. Итак, перепишем уравнение в терминах одной из входных переменных.
Итак, просто внедрите это в код.
# Gather model parameters
theta_0, theta_1, theta_2 = clf.intercept_[0], clf.coef_[:, 0], clf.coef_[:, 1]
# Choose a pair of x values that fit nicely with your data
x_vals = [np.min(X_train[:, 0]) - 2, np.max(X_train[:, 0]) + 2]
# Apply the formula
y_vals = [- (theta_0 + theta_1 * x)/theta_2 for x in v_vals]
plt.plot(x_vals, y_vals, '--', c='r')