Hướng dẫn how do you fit a polynomial to data in python? - làm thế nào để bạn khớp một đa thức với dữ liệu trong python?

numpy.polyfit (x, y, deg, rcond = none, full = false, w = none, cov = false) [nguồn]#polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False)[source]#

Ít hình vuông nhất đa thức phù hợp.

Ghi chú

Điều này là một phần của API đa thức cũ. Kể từ phiên bản 1.4, API đa thức mới được xác định trong numpy.polynomial được ưu tiên. Một bản tóm tắt về sự khác biệt có thể được tìm thấy trong hướng dẫn chuyển tiếp.transition guide.

Phù hợp với đa thức p(x) = p[0] * x**deg + ... + p[deg] độ deg đến các điểm (x, y). Trả về một vectơ của các hệ số p giúp giảm thiểu lỗi bình phương theo thứ tự deg, deg-1, 0 0.

Phương pháp lớp Polynomial.fit được khuyến nghị cho mã mới vì nó ổn định hơn về số lượng. Xem tài liệu của phương thức để biết thêm thông tin.

Tham sốxarray_like, hình dạng (m,)xarray_like, shape (M,)

Tọa độ X của các điểm mẫu M (x[i], y[i]).

yarray_like, hình dạng (m,) hoặc (m, k)array_like, shape (M,) or (M, K)

tọa độ y của các điểm mẫu. Một số bộ dữ liệu của các điểm mẫu chia sẻ cùng một tọa độ X có thể được trang bị cùng một lúc bằng cách truyền trong một mảng 2D có chứa một bộ dữ liệu trên mỗi cột.

Degintint

Mức độ của đa thức phù hợp

RCondFloat, tùy chọnfloat, optional

Số điều kiện tương đối của sự phù hợp. Các giá trị số ít nhỏ hơn so với giá trị số ít nhất sẽ bị bỏ qua. Giá trị mặc định là Len (x)*EPS, trong đó EPS là độ chính xác tương đối của loại phao, khoảng 2E-16 trong hầu hết các trường hợp.

Fullbool, tùy chọnbool, optional

Chuyển đổi xác định bản chất của giá trị trả về. Khi nó là sai (mặc định) chỉ các hệ số được trả về, khi thông tin chẩn đoán thực từ phân tách giá trị số ít cũng được trả về.

Warray_like, Shape (M,), Tùy chọnarray_like, shape (M,), optional

Trọng lượng. Nếu không phải là không, trọng lượng

x[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0]
x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1]
...
x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]
0 áp dụng cho
x[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0]
x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1]
...
x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]
1 còn lại không đủ tại
x[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0]
x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1]
...
x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]
2. Lý tưởng nhất là các trọng số được chọn sao cho các lỗi của sản phẩm
x[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0]
x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1]
...
x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]
3 đều có cùng một phương sai. Khi sử dụng trọng số biến đổi nghịch đảo, hãy sử dụng
x[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0]
x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1]
...
x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]
4. Giá trị mặc định là không có.

covbool hoặc str, tùy chọnbool or str, optional

Nếu được đưa ra và không sai, hãy trả lại không chỉ là ước tính mà còn cả ma trận hiệp phương sai của nó. Theo mặc định, hiệp phương sai được chia tỷ lệ bởi CHI2/DOF, trong đó DOF = M - (DEG + 1), tức là, các trọng số được cho là không đáng tin cậy ngoại trừ theo nghĩa tương đối và mọi thứ đều được chia tỷ lệ sao cho CHI2 giảm là thống nhất. Tỷ lệ này bị bỏ qua nếu

x[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0]
x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1]
...
x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]
5, có liên quan đến trường hợp các trọng số là w = 1/sigma, với sigma được biết là ước tính đáng tin cậy về độ không đảm bảo.

ReturnSpnDarray, hình dạng (deg + 1,) hoặc (deg + 1, k)pndarray, shape (deg + 1,) or (deg + 1, K)

Hệ số đa thức, công suất cao nhất đầu tiên. Nếu y là 2-D, các hệ số cho tập dữ liệu K-th là trong

x[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0]
x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1]
...
x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]
6.

dư lượng, xếp hạng, số ít_values, rcond

Các giá trị này chỉ được trả lại nếu

x[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0]
x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1]
...
x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]
7

  • Phần dư - tổng số dư bình phương của bình phương tối thiểu phù hợp

  • Xếp hạng - Xếp hạng hiệu quả của Vandermonde có tỷ lệ

    Ma trận hệ số

  • Singular_values ​​- Giá trị số ít của Vandermonde được chia tỷ lệ

    Ma trận hệ số

  • Singular_values ​​- Giá trị số ít của Vandermonde được chia tỷ lệ

RCOND - Giá trị của RCond.

Để biết thêm chi tiết, xem
x[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0]
x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1]
...
x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]
8.
ndarray, shape (M,M) or (M,M,K)

Vndarray, hình dạng (m, m) hoặc (m, m, k)

Chỉ có mặt nếu
x[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0]
x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1]
...
x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]
9 và
>>> import warnings
>>> x = np.array([0.0, 1.0, 2.0, 3.0,  4.0,  5.0])
>>> y = np.array([0.0, 0.8, 0.9, 0.1, -0.8, -1.0])
>>> z = np.polyfit(x, y, 3)
>>> z
array([ 0.08703704, -0.81349206,  1.69312169, -0.03968254]) # may vary
0. Ma trận hiệp phương sai của các ước tính hệ số đa thức. Đường chéo của ma trận này là các ước tính phương sai cho từng hệ số. Nếu y là mảng 2-D, thì ma trận hiệp phương sai cho tập dữ liệu K-th là trong
>>> import warnings
>>> x = np.array([0.0, 1.0, 2.0, 3.0,  4.0,  5.0])
>>> y = np.array([0.0, 0.8, 0.9, 0.1, -0.8, -1.0])
>>> z = np.polyfit(x, y, 3)
>>> z
array([ 0.08703704, -0.81349206,  1.69312169, -0.03968254]) # may vary
1

WARNSRANKWARNING

Thứ hạng của ma trận hệ số trong độ phù hợp bình phương nhỏ nhất là thiếu. Cảnh báo chỉ được nêu ra nếu

x[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0]
x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1]
...
x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]
9.

>>> import warnings
>>> warnings.simplefilter('ignore', np.RankWarning)

Các cảnh báo có thể được tắt bằng cách

Ghi chú

Giải pháp giảm thiểu lỗi bình phương

\ [E = \ sum_ {j = 0}^k | p (x_j) - y_j |^2 \]

x[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0]
x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1]
...
x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]

trong các phương trình:

Ma trận hệ số của các hệ số P là ma trận Vandermonde.

>>> import warnings
>>> x = np.array([0.0, 1.0, 2.0, 3.0,  4.0,  5.0])
>>> y = np.array([0.0, 0.8, 0.9, 0.1, -0.8, -1.0])
>>> z = np.polyfit(x, y, 3)
>>> z
array([ 0.08703704, -0.81349206,  1.69312169, -0.03968254]) # may vary
3 phát hành A
>>> import warnings
>>> x = np.array([0.0, 1.0, 2.0, 3.0,  4.0,  5.0])
>>> y = np.array([0.0, 0.8, 0.9, 0.1, -0.8, -1.0])
>>> z = np.polyfit(x, y, 3)
>>> z
array([ 0.08703704, -0.81349206,  1.69312169, -0.03968254]) # may vary
4 khi phù hợp bình phương nhỏ nhất bị điều hòa xấu. Điều này ngụ ý rằng sự phù hợp nhất không được xác định rõ do lỗi số. Các kết quả có thể được cải thiện bằng cách giảm mức độ đa thức hoặc bằng cách thay thế x bằng x - x.mean (). Tham số RCond cũng có thể được đặt thành một giá trị nhỏ hơn mặc định của nó, nhưng sự phù hợp kết quả có thể là giả mạo: bao gồm các đóng góp từ các giá trị số ít nhỏ có thể thêm nhiễu số vào kết quả.

Lưu ý rằng các hệ số đa thức phù hợp vốn đã được điều hòa xấu khi mức độ của đa thức lớn hoặc khoảng thời gian của các điểm mẫu được tập trung xấu. Chất lượng của sự phù hợp phải luôn luôn được kiểm tra trong những trường hợp này. Khi sự phù hợp đa thức không thỏa đáng, spline có thể là một sự thay thế tốt.

1

Người giới thiệu

2

Wikipedia, đường cong phù hợp với nhau, https://en.wikipedia.org/wiki/curve_fits

Wikipedia, Nội suy đa thức, https://en.wikipedia.org/wiki/Polynomial_interpolation

>>> import warnings
>>> x = np.array([0.0, 1.0, 2.0, 3.0,  4.0,  5.0])
>>> y = np.array([0.0, 0.8, 0.9, 0.1, -0.8, -1.0])
>>> z = np.polyfit(x, y, 3)
>>> z
array([ 0.08703704, -0.81349206,  1.69312169, -0.03968254]) # may vary

Ví dụ

>>> p = np.poly1d(z)
>>> p(0.5)
0.6143849206349179 # may vary
>>> p(3.5)
-0.34732142857143039 # may vary
>>> p(10)
22.579365079365115 # may vary

Thật thuận tiện khi sử dụng các đối tượng

>>> import warnings
>>> x = np.array([0.0, 1.0, 2.0, 3.0,  4.0,  5.0])
>>> y = np.array([0.0, 0.8, 0.9, 0.1, -0.8, -1.0])
>>> z = np.polyfit(x, y, 3)
>>> z
array([ 0.08703704, -0.81349206,  1.69312169, -0.03968254]) # may vary
5 để xử lý đa thức:

>>> with warnings.catch_warnings():
...     warnings.simplefilter('ignore', np.RankWarning)
...     p30 = np.poly1d(np.polyfit(x, y, 30))
...
>>> p30(4)
-0.80000000000000204 # may vary
>>> p30(5)
-0.99999999999999445 # may vary
>>> p30(4.5)
-0.10547061179440398 # may vary

Illustration:

>>> import matplotlib.pyplot as plt
>>> xp = np.linspace(-2, 6, 100)
>>> _ = plt.plot(x, y, '.', xp, p(xp), '-', xp, p30(xp), '--')
>>> plt.ylim(-2,2)
(-2, 2)
>>> plt.show()

Hướng dẫn how do you fit a polynomial to data in python? - làm thế nào để bạn khớp một đa thức với dữ liệu trong python?

Làm thế nào để bạn phù hợp với đa thức vào các điểm dữ liệu?

Để hoàn toàn phù hợp với các đa thức đến các điểm dữ liệu, cần có đa thức đơn đặt hàng. Để phục hồi hơi khác nhau, bất kỳ tập hợp điểm nào cũng có thể được mô hình hóa bằng một đa thức của trật tự. Có thể chỉ ra rằng một đa thức như vậy tồn tại và chỉ có một đa thức chính xác phù hợp với các điểm đó.an order polynomial is required. To restate slightly differently, any set of points can be modeled by a polynomial of order . It can be shown that such a polynomial exists and that there is only one polynomial that exactly fits those points.

Làm thế nào để bạn nhập một đa thức vào Python?

Chương trình Python để tính toán một phương trình đa thức..
Nhập mô -đun toán học ..
Lấy các hệ số của phương trình đa thức và lưu trữ nó trong danh sách ..
Lấy giá trị của x ..
Sử dụng một vòng lặp và trong khi vòng lặp để tính toán giá trị của biểu thức đa thức cho ba thuật ngữ đầu tiên và lưu trữ nó trong một biến tổng ..

Làm thế nào để bạn phù hợp với một dòng dữ liệu trong Python?

Làm thế nào để vẽ một dòng phù hợp nhất trong Python..
x = np.Mảng ([1, 3, 5, 7]).
y = np.Mảng ([6, 3, 9, 5]).
m, b = np.polyfit (x, y, 1) m = độ dốc, b = đánh chặn ..
plt.Lô đất (x, y, 'o') Tạo cốt truyện phân tán ..
plt.Biểu đồ (x, m*x + b) Thêm dòng phù hợp nhất ..

Làm thế nào để bạn phù hợp với một biểu đồ trong Python?

Thực hiện phù hợp với đường cong trong Python.Phù hợp với đường cong có thể được thực hiện cho bộ dữ liệu bằng Python.Python cung cấp một thư viện nguồn mở được gọi là gói SCIPY.Gói SCIPY này liên quan đến một hàm được gọi là hàm curve_fit () được sử dụng để cong phù hợp thông qua các bình phương tối thiểu phi tuyến tính.Python provides an open-source library known as the SciPy package. This SciPy package involves a function known as the curve_fit() function used to curve fit through Non-Linear Least Squares.