Во-первых, вы выполняете подгонку полиномиальных функций дважды, это ваше предназначение?
Описанная проблема возникает из-за того, что plt.plot(X, Y)
соединяется со строками (X[0], Y[0])
с (X[1], Y[1])
, (X[1], Y[1])
с (X[2], Y[2])
, et c. Порядок имеет значение, если вы перетасуете X и Y, вы получите другой сюжет. Здесь ваши точки неупорядочены, вам нужно отсортировать их, чтобы получить более плавный график.
def viz_polymonial():
plt.scatter(X.iloc[:, 1], Y, color='red')
data = list(zip(X, pol_reg.predict(poly_reg.transform(X)))
# sort data by X and unpack
sorted_X, sorted_Y = **sorted(data)
plt.plot(sorted_X, sorted_Y, color='blue')
plt.xlabel('Age. Annual income')
plt.ylabel('Spending Score')
plt.show()
return
viz_polymonial()
Если вы сделаете минимальный воспроизводимый пример, я протестирую его на своей машине.