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. Show 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. Í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 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. DegintintMức độ của đa thức phù hợp RCondFloat, tùy chọnfloat, optionalSố đ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, optionalChuyể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,), optionalTrọ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, optionalNế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, rcondCác giá trị này chỉ được trả lại nếu np.polyval(poly, x) 0
RCOND - Giá trị của RCond. Để biết thêm chi tiết, xemnp.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ếunp.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) 4WARNSRANKWARNING 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 1Wikipedia, đường cong phù hợp với nhau, https://en.wikipedia.org/wiki/curve_fits 2Wikipedia, 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() 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:. |