Hướng dẫn polynomial line of best fit python - dòng đa thức của python phù hợp nhất

Phù hợp với đường cong là một công cụ mạnh mẽ khi chúng tôi muốn xác định hoặc mô hình hóa mối quan hệ giữa hai bộ dữ liệu và được thực hiện bằng cách tìm chức năng phù hợp nhất hoặc đường cong trên toàn bộ phạm vi. Hàm này sau đó có thể được sử dụng để nội suy dữ liệu trong phạm vi đã cho hoặc ngoại suy các giá trị có thể có bên ngoài phạm vi.

Hình thức phổ biến nhất của khớp đường cong là hồi quy tuyến tính, trong đó chúng ta tìm thấy dòng mô tả đúng nhất mối quan hệ của một biến với biến khác và sử dụng dòng đó để dự đoán. Tuy nhiên, tất cả chúng ta đều biết rằng hầu hết dữ liệu không nằm trong mối quan hệ tuyến tính và đa thức sau đó là một cách phù hợp tốt hơn.

Phù hợp đa thức tuân theo khái niệm tương tự như phù hợp tuyến tính nhưng ở đây, chúng tôi đang sử dụng đa thức N-N-N-để mô tả mối quan hệ của dữ liệu của chúng tôi. Tuy nhiên, cả hai đều đang sử dụng phương pháp bình phương nhỏ nhất trong việc xác định các chức năng phù hợp nhất.

Trong Python, cách làm đường cong phổ biến nhất là sử dụng hàm phù hợp với đường cong trong Scipy.

from scipy.optimize import curve_fit

Đây là một cách tiếp cận tốt vì phương pháp có thể được sử dụng để phù hợp với tất cả các chức năng, không chỉ đa thức và mã duy nhất mà bạn cần thay đổi là mã của chức năng mà bạn muốn phù hợp với dữ liệu của mình.

Tuy nhiên, một vấn đề phát sinh, ít nhất là trong phù hợp đa thức, khi bạn muốn tìm mức độ tốt nhất phù hợp với dữ liệu của bạn. Có, bạn vẫn có thể viết một chức năng cho việc này nhưng điều đó thực sự làm phức tạp phần mã hóa và cho bạn ít thời gian hơn để thực hiện phân tích thực tế.

Điều tốt là Numpy có chức năng tích hợp để phù hợp và có thể được gọi bằng cách gọi Numpy.polyfit.

Ở đây, một mã ví dụ để sử dụng điều này thay vì phương pháp lắp đường cong thông thường trong Python.

Mã trên cho thấy cách phù hợp với đa thức với một mức độ năm đến phần tăng của sóng hình sin. Sử dụng phương pháp này, bạn có thể dễ dàng lặp đa thức đa thức N có độ n khác nhau để xem phương pháp tốt nhất cho dữ liệu của bạn.

Sự phù hợp thực tế xảy ra trong

poly = np.polyfit(x, sine, deg=5)

Phương pháp này trả về các hệ số của đa thức phù hợp nhất bắt đầu từ thứ tự cao nhất đến hằng số.

Chức năng:

np.polyval(poly, x)

Sau đó có thể được sử dụng để đánh giá biến độc lập X thành đa thức bằng cách sử dụng các hệ số được tìm thấy.

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

poly = np.polyfit(x, sine, deg=5)
0 độ 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

poly = np.polyfit(x, sine, deg=5)
1 đượ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

poly = np.polyfit(x, sine, deg=5)
2.

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

poly = np.polyfit(x, sine, deg=5)
3 áp dụng cho phần còn lại không đủ
poly = np.polyfit(x, sine, deg=5)
4 tại
poly = np.polyfit(x, sine, deg=5)
5. 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
poly = np.polyfit(x, sine, deg=5)
6 đề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
poly = np.polyfit(x, sine, deg=5)
7. 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

poly = np.polyfit(x, sine, deg=5)
8, 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 nằm trong

poly = np.polyfit(x, sine, deg=5)
9.

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

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

np.polyval(poly, x)
0

  • 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
np.polyval(poly, x)
1.
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
np.polyval(poly, x)
2 và
np.polyval(poly, x)
3. 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 có trong
np.polyval(poly, x)
4

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

np.polyval(poly, x)
2.

>>> 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.

np.polyval(poly, x)
6 phát hành A
np.polyval(poly, x)
7 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ả.

Người giới thiệu

1

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

2

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

Ví dụ

>>> 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

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

np.polyval(poly, x)
8 để xử lý đa thức:

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

Các đa thức bậc cao có thể dao động dữ dội:

>>> 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 polynomial line of best fit python - dòng đa thức của python phù hợp nhất

Làm thế nào để bạn tìm thấy dòng phù hợp nhất 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 đa thức với dữ liệu trong Python?

Để có được sự phù hợp bình phương nhỏ nhất của một đa thức đối với dữ liệu, hãy sử dụng đa thức.polyfit () trong Python Numpy.Phương pháp trả về các hệ số đa thức được đặt hàng từ thấp đến cao.Nếu y là 2-D, các hệ số trong cột K của coef thể hiện sự phù hợp với đa thức với dữ liệu trong cột K của y.use the polynomial. polyfit() in Python Numpy. The method returns the Polynomial coefficients ordered from low to high. If y was 2-D, the coefficients in column k of coef represent the polynomial fit to the data in y's k-th column.

Làm thế nào để bạn dự đoán một hồi quy đa thức trong Python?

Làm thế nào nó hoạt động?..
Bắt đầu bằng cách vẽ một cốt truyện phân tán: ....
Nhập Numpy và Matplotlib sau đó vẽ dòng hồi quy đa thức: ....
Dữ liệu của tôi phù hợp với hồi quy đa thức như thế nào?....
Dự đoán tốc độ của một chiếc xe đi qua lúc 17:00: ....
Các giá trị này cho trục x và y sẽ dẫn đến sự phù hợp rất xấu cho hồi quy đa thức:.