Метод numpy.polyfit() используется в Python для подгонки данных в полиномиальную функцию.
Синтаксис
|
1 |
numpy.polyfit(X, Y, deg, rcond=None, full=False, w=None, cov=False) |
Параметры
Эта функция принимает не более семи параметров:
- X: array_like,
предположим, он имеет форму размера(М). В выборке из M примеров он представляет координаты x(X[i],Y[i]).
- Y: array_like,
он имеет форму(М) или(М, К). Он представляет координаты y(X[i], Y[i]) точек выборки.
- deg: int,
это должно быть целочисленное значение и указывать степень соответствия полинома.
- rcond: float. Это необязательный параметр.
Он описывает относительный номер состояния посадки. Те сингулярные значения, которые меньше этого относительно наибольшего сингулярного значения, будут игнорироваться.
- full: это необязательный параметр логического типа.
Он действует как переключатель и помогает определить природу возвращаемого значения. Например, если для значения установлено значение false(по умолчанию), возвращаются только коэффициенты; когда значение установлено равным true , дополнительно возвращается диагностическая информация из разложения по единственному значению.
- w: array_like, shape(M,), необязательный
Это веса, которые применяются к координатам Y точек выборки. Для гауссовой неопределенности мы должны использовать 1/сигма(а не 1/сигма**2).
- cov: bool или str, необязательный параметр
Если указано и не установлено значение False, он возвращает оценку и ее ковариационную матрицу. Ковариация по умолчанию масштабируется как chi**2/sqrt(N-dof), т. е. веса считаются ненадежными, за исключением относительного смысла, и все масштабируется так, что приведенное chi2 равно единице.
Если cov=’unscaled’, то масштабирование опускается, оно актуально, поскольку веса равны 1/сигма**2, при этом известно, что сигма является надежной оценкой неопределенности.
Возвращаемое значение
Возвращает ndarray, shape(deg+1,) или(deg+1, K).
Пример 1: как использовать метод numpy.polyfit()
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# importing the numpy module import numpy as np # Creating a dataset x = np.arange(-5, 5) print("X values in the dataset are:\n", x) y = np.arange(-30, 30, 6) print("Y values in the dataset are:\n", y) # calculating value of coefficients in case of linear polynomial z = np.polyfit(x, y, 1) print("\ncoefficient value in case of linear polynomial:\n", z) # calculating value of coefficient in case of quadratic polynomial z1 = np.polyfit(x, y, 2) print("\ncoefficient value in case of quadratic polynomial:\n", z1) # calculating value of coefficient in case of cubic polynomial z2 = np.polyfit(x, y, 3) print("\ncoefficient value in case of cubic polynomial:\n", z2) |
Выход
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
X values in the dataset are: [-5 -4 -3 -2 -1 0 1 2 3 4] Y values in the dataset are: [-30 -24 -18 -12 -6 0 6 12 18 24] coefficient value in case of linear polynomial: [6.00000000e+00 4.62412528e-16] coefficient value in case of quadratic polynomial: [ 1.36058326e-16 6.00000000e+00 -2.24693342e-15] coefficient value in case of cubic polynomial: [ 1.10709805e-16 0.00000000e+00 6.00000000e+00 -8.42600032e-16] |
Пример 2: использование метода np.polyfit() для реализации линейной регрессии
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import numpy as np import matplotlib.pyplot as plt x = np.arange(0, 30, 3) print("X points are: \n", x) y = x**2 print("Y points are: \n", y) plt.scatter(x, y) plt.xlabel("X-values") plt.ylabel("Y-values") plt.plot(x, y) p = np.polyfit(x, y, 2) # Last argument is degree of polynomial print("Coeeficient values:\n", p) predict = np.poly1d(p) x_test = 15 print("\nGiven x_test value is: ", x_test) y_pred = predict(x_test) print("\nPredicted value of y_pred for given x_test is: ", y_pred) |
Выход
|
1 2 3 4 5 6 7 8 9 10 |
X points are: [ 0 3 6 9 12 15 18 21 24 27] Y points are: [ 0 9 36 81 144 225 324 441 576 729] Coeeficient values: [ 1.00000000e+00 -2.02043144e-14 2.31687975e-13] Given x_test value is: 15 Predicted value of y_pred for given x_test is: 225.00000000000009 |
|
1 |
<img class="alignnone" src="https://python-lab.ru/wp-content/uploads/2023/09/numpy-polyfit-method.png" alt="Numpy polyfit() метод" width="419" height="282" /> |
Пример 3: как подогнать полиномиальную функцию с помощью numpy.polyfit()
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import numpy as np import matplotlib.pyplot as plt # Define some data points x = np.array([0, 1, 2, 3, 4, 5]) y = np.array([0, 0.8, 0.9, 0.1, -0.8, -1]) # Fit a polynomial of degree 3 to the data coefficients = np.polyfit(x, y, 3) # Create a polynomial function that can be # used for plotting or further calculations p = np.poly1d(coefficients) # Generate x values x_fit = np.linspace(x.min(), x.max(), 500) # Use the polynomial function to calculate the y values y_fit = p(x_fit) # Plot the original data(in blue) and the fitted data(in red) plt.scatter(x, y, label='Original data', color='b') plt.plot(x_fit, y_fit, label='Fitted data', color='r') plt.legend() plt.show() |
Выход

