Прежде всего, ваша переменная windiness содержит одно дополнительное значение, поэтому вам нужно удалить одно, убедитесь, что длина переменной и на входе, и на выходе. Теперь давайте продолжим с вашим обновленным кодом. Я удалил 0 для простоты.
utility = np.array([100, 96.64, 43.94, 24.48, 0, 0.05])
windiness = np.array([2.5, 6.7, 12.3, 15.5, 19, 20])
windiness = windiness[:, np.newaxis]
utility = utility[:, np.newaxis]
polynomial_features= PolynomialFeatures(degree=3)
x_poly = polynomial_features.fit_transform(windiness)
model = LinearRegression()
model.fit(x_poly, utility)
y_poly_pred = model.predict(x_poly)
Теперь давайте напечатаем ваш новый преобразованный вектор элементов
print(x_poly)
Вы должны получить вывод, подобный этому
[[1.000000e+00 2.500000e+00 6.250000e+00 1.562500e+01]
[1.000000e+00 6.700000e+00 4.489000e+01 3.007630e+02]
[1.000000e+00 1.230000e+01 1.512900e+02 1.860867e+03]
[1.000000e+00 1.550000e+01 2.402500e+02 3.723875e+03]
[1.000000e+00 1.900000e+01 3.610000e+02 6.859000e+03]
[1.000000e+00 2.000000e+01 4.000000e+02 8.000000e+03]]
Здесь мы видим, что первая особенность - это X ^ 0, вторая - это X ^ 1, третья - это X ^ 2, а четвертая - это X ^ 3. Теперь он изменился с полиномиальной на эквивалентную линейную модель.
Коэффициент вашей модели можно увидеть по этому print(model.coef_)
. Вы получаете это [[ 0.0 11.125 -1.718 0.047]]
Теперь давайте смоделируем полином 3-го порядка следующим образом
y[0] = model.intercept_ + 0.0 * X[0]^0 + 11.125 * X[0]^1 + (-1.718) * X[0]^2 + 0.047*X[0]^3
Короче говоря, коэффициенты следующие
a = 11.125
b = -1.718
c = 0.047
.