Я вычисляю тэту для своего ИИ следующим образом:
theta = opt.fmin_cg(cost, initial_theta, gradient, (newX, y))
, которая прекрасно работает и дает мне такой вывод:
Optimization terminated successfully.
Current function value: 0.684355
Iterations: 6
Function evaluations: 15
Gradient evaluations: 15
Когда я печатаю тета, я получаю это:
[ 0. -0.28132729 0.158859 ]
Теперь я хочу построить это на графике рассеяния в виде линии, мой ожидаемый результат выглядит следующим образом:

Но когда я пытаюсь выполнить это на моем графике с помощью алгоритма:
weights * features = weight0 + weight1 * feature1 + weight2 * feature2
Примерно так:
x_axis = np.array([min(newX[:, 1]), max(newX[:, 1])])
y_axis = x_axis * theta[1:]
ax.plot(x_axis, y_axis, linewidth=2)
plt.show()
Вывод выглядит так:

Что должно быть y_axis = x_axis * theta[1:]
, чтобы соответствовать алгоритму?
Обновление:
newX
вытекает из моего фрейма тренировочных данных и создается следующим образом:
newX = np.zeros(shape=(x.shape[0], x.shape[1] + 1))
newX[:, 1:] = x.values
Теперь это выглядит следующим образом, концепция 0 - это свободный вес:
[[0. 8. 2.]
[0. 0. 0.]
[0. 0. 0.]
...
[0. 0. 0.]
[0. 0. 0.]
[0. 1. 1.]]