Cập nhật lần cuối vào ngày 14 tháng 11 năm 2021
Phù hợp với đường cong là một loại tối ưu hóa tìm thấy một tập hợp các tham số tối ưu cho một hàm được xác định phù hợp nhất với một tập hợp các quan sát nhất định. is a type of optimization that finds an optimal set of parameters for a defined function that best fits a given set of observations.
Không giống như học tập có giám sát, đường cong phù hợp đòi hỏi bạn phải xác định chức năng ánh xạ các ví dụ về đầu vào cho đầu ra.
Hàm ánh xạ, còn được gọi là hàm cơ bản có thể có bất kỳ hình thức nào bạn thích, bao gồm một đường thẳng [hồi quy tuyến tính], đường cong [hồi quy đa thức] và nhiều hơn nữa. Điều này cung cấp tính linh hoạt và kiểm soát để xác định hình thức của đường cong, trong đó một quy trình tối ưu hóa được sử dụng để tìm các tham số tối ưu cụ thể của hàm.
Trong hướng dẫn này, bạn sẽ khám phá cách thực hiện phù hợp với đường cong trong Python.
Sau khi hoàn thành hướng dẫn này, bạn sẽ biết:
- Đường cong phù hợp liên quan đến việc tìm các tham số tối ưu cho một hàm ánh xạ các ví dụ về đầu vào cho đầu ra.
- Thư viện SCIPY Python cung cấp API để phù hợp với đường cong cho bộ dữ liệu.
- Cách sử dụng đường cong phù hợp trong SCIPY để phù hợp với một loạt các đường cong khác nhau cho một tập hợp các quan sát.
Kick bắt đầu dự án của bạn với Tối ưu hóa cuốn sách mới của tôi để học máy, bao gồm các hướng dẫn từng bước và các tệp mã nguồn Python cho tất cả các ví dụ. with my new book Optimization for Machine Learning, including step-by-step tutorials and the Python source code files for all examples.
Bắt đầu nào.Đường cong phù hợp với Pythonphoto của Gael Varoquaux, một số quyền được bảo lưu.
Photo by Gael Varoquaux, some rights reserved.
Tổng quan hướng dẫn
Hướng dẫn này được chia thành ba phần; họ đang:
- Đường cong phù hợp
- Đường cong phù hợp với API Python
- Ví dụ phù hợp với đường cong
Đường cong phù hợp
Đường cong phù hợp với API Python
Ví dụ phù hợp với đường cong
Phù hợp với đường cong là một vấn đề tối ưu hóa tìm thấy một dòng phù hợp nhất với bộ sưu tập các quan sát.
Nó là dễ nhất để nghĩ về đường cong phù hợp theo hai chiều, chẳng hạn như biểu đồ.
Hãy xem xét rằng chúng tôi đã thu thập các ví dụ về dữ liệu từ miền vấn đề với đầu vào và đầu ra.
Trục X là biến độc lập hoặc đầu vào cho hàm. Trục y là biến phụ thuộc hoặc đầu ra của hàm. Chúng tôi không biết hình thức của hàm ánh xạ các ví dụ về đầu vào cho đầu ra, nhưng chúng tôi nghi ngờ rằng chúng tôi có thể xấp xỉ hàm với dạng chức năng tiêu chuẩn.
Phù hợp với đường cong liên quan đến việc xác định dạng chức năng của hàm ánh xạ [còn gọi là hàm cơ sở hoặc hàm mục tiêu], sau đó tìm kiếm các tham số cho hàm dẫn đến lỗi tối thiểu.
Lỗi được tính bằng cách sử dụng các quan sát từ miền và chuyển các đầu vào cho chức năng ánh xạ ứng cử viên của chúng tôi và tính toán đầu ra, sau đó so sánh đầu ra được tính toán với đầu ra quan sát được.
Khi phù hợp, chúng ta có thể sử dụng chức năng ánh xạ để nội suy hoặc ngoại suy các điểm mới trong miền. Người ta thường chạy một chuỗi các giá trị đầu vào thông qua hàm ánh xạ để tính toán một chuỗi các đầu ra, sau đó tạo một biểu đồ dòng của kết quả để hiển thị đầu ra thay đổi theo đầu vào và mức độ phù hợp với các điểm được quan sát tốt như thế nào.
- Chìa khóa để phù hợp với đường cong là hình thức của hàm ánh xạ.
Một đường thẳng giữa đầu vào và đầu ra có thể được xác định như sau:
y = a * x + b
Trong đó y là đầu ra được tính toán, x là đầu vào và A và B là các tham số của hàm ánh xạ được tìm thấy bằng thuật toán tối ưu hóa.
Đây được gọi là phương trình tuyến tính vì nó là tổng trọng số của các đầu vào.
Trong mô hình hồi quy tuyến tính, các tham số này được gọi là hệ số; Trong một mạng lưới thần kinh, chúng được gọi là trọng lượng.
- Phương trình này có thể được khái quát hóa cho bất kỳ số lượng đầu vào nào, có nghĩa là khái niệm phù hợp với đường cong không giới hạn ở hai chiều [một đầu vào và một đầu ra], nhưng có thể có nhiều biến đầu vào.
Ví dụ: chức năng ánh xạ dòng cho hai biến đầu vào có thể trông như sau:
y = a1 * x1 + a2 * x2 + b
- Phương trình không phải là một đường thẳng.
Chúng ta có thể thêm các đường cong trong chức năng ánh xạ bằng cách thêm số mũ. Ví dụ: chúng ta có thể thêm một phiên bản bình phương của đầu vào có trọng số bởi một tham số khác:
y = a * x + b * x^2 + c
Đây được gọi là hồi quy đa thức, và thuật ngữ bình phương có nghĩa là nó là đa thức cấp độ hai.
- Cho đến nay, các phương trình tuyến tính của loại này có thể phù hợp bằng cách giảm thiểu bình phương tối thiểu và có thể được tính toán bằng phân tích. Điều này có nghĩa là chúng ta có thể tìm thấy các giá trị tối ưu của các tham số bằng cách sử dụng một đại số tuyến tính nhỏ.
Chúng tôi cũng có thể muốn thêm các hàm toán học khác vào phương trình, chẳng hạn như sin, cosin, v.v. Mỗi thuật ngữ được cân bằng một tham số và được thêm vào toàn bộ để cung cấp đầu ra; Ví dụ:
Điều này được gọi là bình phương tối thiểu phi tuyến, vì hàm mục tiêu không còn lồi [nó phi tuyến] và không dễ giải quyết.
Bây giờ chúng ta đã quen thuộc với phù hợp với đường cong, hãy để Lôi nhìn vào cách chúng ta có thể thực hiện phù hợp với đường cong trong Python.
Bạn muốn bắt đầu với các thuật toán tối ưu hóa?
Tham gia khóa học gặp sự cố email 7 ngày miễn phí của tôi ngay bây giờ [với mã mẫu].
Nhấp để đăng ký và cũng nhận được phiên bản Ebook PDF miễn phí của khóa học.
Đường cong phù hợp với API Python
Chúng tôi có thể thực hiện phù hợp với đường cong cho bộ dữ liệu của chúng tôi trong Python.
Thư viện nguồn mở Scipy cung cấp chức năng Curve_fit [] cho đường cong phù hợp thông qua bình phương tối thiểu phi tuyến.
Hàm có cùng dữ liệu đầu vào và đầu ra làm đối số, cũng như tên của hàm ánh xạ để sử dụng.
Hàm ánh xạ phải lấy các ví dụ về dữ liệu đầu vào và một số đối số. Các đối số còn lại này sẽ là các hệ số hoặc hằng số trọng lượng sẽ được tối ưu hóa bằng quá trình tối ưu hóa bình phương tối thiểu phi tuyến.
Ví dụ, chúng tôi có thể có một số quan sát từ miền của chúng tôi được tải dưới dạng các biến đầu vào x và các biến đầu ra y.
..... # Tải các biến đầu vào từ một tệp x_values=...=... y_values=...=... |
Tiếp theo, chúng ta cần thiết kế một chức năng ánh xạ để phù hợp với một dòng vào dữ liệu và thực hiện nó như một hàm Python lấy đầu vào và các đối số.
Nó có thể là một đường thẳng, trong trường hợp nó sẽ trông như sau:
# hàm mục tiêu Mục tiêu def [x, a, b, c]:objective[x,a,b,c]: returna *x+ba *x+b |
Sau đó, chúng ta có thể gọi hàm curve_fit [] để phù hợp với một đường thẳng vào tập dữ liệu bằng hàm đã xác định của chúng tôi.
Hàm đường cong_fit [] trả về các giá trị tối ưu cho hàm ánh xạ, ví dụ, các giá trị hệ số. Nó cũng trả về một ma trận hiệp phương sai cho các tham số ước tính, nhưng chúng ta có thể bỏ qua điều đó bây giờ.
..... # Tải các biến đầu vào từ một tệp popt,_=curve_fit[objective,x_values,y_values],_=curve_fit[objective,x_values,y_values] |
Tiếp theo, chúng ta cần thiết kế một chức năng ánh xạ để phù hợp với một dòng vào dữ liệu và thực hiện nó như một hàm Python lấy đầu vào và các đối số.
Nó có thể là một đường thẳng, trong trường hợp nó sẽ trông như sau:
..... # Tải các biến đầu vào từ một tệp x_new=...=... Tiếp theo, chúng ta cần thiết kế một chức năng ánh xạ để phù hợp với một dòng vào dữ liệu và thực hiện nó như một hàm Python lấy đầu vào và các đối số. a,b,c=popt,b,c=popt Nó có thể là một đường thẳng, trong trường hợp nó sẽ trông như sau: y_new=objective[x_new,a,b,c]=objective[x_new,a,b,c] |
# hàm mục tiêu
Mục tiêu def [x, a, b, c]:
returna *x+b
Sau đó, chúng ta có thể gọi hàm curve_fit [] để phù hợp với một đường thẳng vào tập dữ liệu bằng hàm đã xác định của chúng tôi.
- Hàm đường cong_fit [] trả về các giá trị tối ưu cho hàm ánh xạ, ví dụ, các giá trị hệ số. Nó cũng trả về một ma trận hiệp phương sai cho các tham số ước tính, nhưng chúng ta có thể bỏ qua điều đó bây giờ.
- # phù hợp với đường cong
Khi phù hợp, chúng ta có thể sử dụng các tham số tối ưu và mục tiêu chức năng ánh xạ của chúng ta [] để tính đầu ra cho bất kỳ đầu vào tùy ý nào.
Điều này có thể bao gồm đầu ra cho các ví dụ chúng tôi đã thu thập từ miền, nó có thể bao gồm các giá trị mới nội suy các giá trị quan sát được hoặc nó có thể bao gồm các giá trị ngoại suy bên ngoài giới hạn của những gì được quan sát.
# Xác định các giá trị đầu vào mới
# Giải nén các tham số Optima cho hàm mục tiêu
# Sử dụng các tham số tối ưu để tính toán các giá trị mới Bây giờ chúng tôi đã quen thuộc với việc sử dụng API phù hợp với đường cong, hãy để xem xét một ví dụ hoạt động.pandas import read_csv Ví dụ phù hợp với đường congmatplotlib import pyplot Chúng tôi sẽ phát triển một đường cong để phù hợp với một số quan sát trong thế giới thực về dữ liệu kinh tế. url='//raw.githubusercontent.com/jbrownlee/Datasets/master/longley.csv'='//raw.githubusercontent.com/jbrownlee/Datasets/master/longley.csv' dataframe=read_csv[url,header=None]= read_csv[url,header=None] data=dataframe.values=dataframe.values Trong ví dụ này, chúng tôi sẽ sử dụng bộ dữ liệu được gọi là bộ dữ liệu hồi quy kinh tế của Long Longley; Bạn có thể tìm hiểu thêm về nó ở đây: x,y=data[:,4],data[:,-1],y=data[:, 4],data[:,-1] Hồi quy kinh tế Longley [Longley.csv] pyplot.scatter[x,y].scatter[x,y] pyplot.show[].show[] |
Mô tả hồi quy kinh tế của Longley [Longley.Names]
Chúng tôi sẽ tự động tải xuống bộ dữ liệu như một phần của ví dụ đã làm việc.
Có bảy biến đầu vào và 16 hàng dữ liệu, trong đó mỗi hàng xác định một bản tóm tắt các chi tiết kinh tế trong một năm từ năm 1947 đến 1962.
Trong ví dụ này, chúng tôi sẽ khám phá việc phù hợp với một ranh giới giữa quy mô dân số và số người làm việc cho mỗi năm.
Ví dụ dưới đây tải bộ dữ liệu từ URL, chọn biến đầu vào là Dân số, và biến đầu ra như được sử dụng và tạo ra một biểu đồ phân tán.
# Lô đất "Dân số" VS "làm việc" Từ Pandas Nhập READ_CSVobjective[x,a,b]: returna *x+ba *x+b |
Sau đó, chúng ta có thể gọi hàm curve_fit [] để phù hợp với một đường thẳng vào tập dữ liệu bằng hàm đã xác định của chúng tôi.
..... # Tải các biến đầu vào từ một tệp popt,_=curve_fit[objective,x,y],_=curve_fit[objective,x,y] Tiếp theo, chúng ta cần thiết kế một chức năng ánh xạ để phù hợp với một dòng vào dữ liệu và thực hiện nó như một hàm Python lấy đầu vào và các đối số. a,b=popt,b= popt Nó có thể là một đường thẳng, trong trường hợp nó sẽ trông như sau:['y = %.5f * x + %.5f'%[a,b]] |
# hàm mục tiêu
..... Hồi quy kinh tế Longley [Longley.csv] pyplot.scatter[x,y].scatter[x,y] |
Mô tả hồi quy kinh tế của Longley [Longley.Names]
Chúng tôi sẽ tự động tải xuống bộ dữ liệu như một phần của ví dụ đã làm việc.
..... # Xác định một chuỗi các đầu vào giữa các đầu vào nhỏ nhất và lớn nhất được biết đến x_line=arange[min[x],max[x],1]=arange[min[x],max[x],1] |
Sau đó, chúng ta có thể tính toán giá trị đầu ra cho từng giá trị đầu vào.
..... # Tính đầu ra cho phạm vi y_line=objective[x_line,a,b]=objective[x_line,a,b] |
Sau đó tạo một biểu đồ dòng của các đầu vào so với các đầu ra để xem một dòng:
..... # Tạo một biểu đồ đường cho chức năng ánh xạ pyplot.plot[x_line,y_line,'--',color='red'].plot[x_line,y_line,'--',color='red'] |
Kết hợp điều này lại với nhau, ví dụ dưới đây sử dụng đường cong phù hợp để tìm các tham số của một đường thẳng cho dữ liệu kinh tế của chúng tôi.
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 27 28 29 30 | # phù hợp với một đường thẳng vào dữ liệu kinh tế từ nhập khẩu Numpy Arangenumpy import arange Từ Pandas Nhập READ_CSVpandas import read_csv từ scipy.Optimize irport curve_fitscipy.optimize import curve_fit từ pyplot nhập khẩu matplotlibmatplotlib import pyplot # Xác định chức năng mục tiêu thực Mục tiêu def [x, a, b]:objective[x,a,b]: returna *x+ba *x+b # Tải bộ dữ liệu url='//raw.githubusercontent.com/jbrownlee/Datasets/master/longley.csv'= '//raw.githubusercontent.com/jbrownlee/Datasets/master/longley.csv' dataframe=read_csv[url,header=None]=read_csv[url,header=None] data=dataframe.values=dataframe.values # Chọn các biến đầu vào và đầu ra x,y=data[:,4],data[:,-1], y=data[:,4],data[:,-1] # đường cong phù hợp popt,_=curve_fit[objective,x,y],_= curve_fit[objective,x,y] # Tóm tắt các giá trị tham số a,b=popt,b=popt in ['y = %.5f * x + %.5f' %[a, b]]['y = %.5f * x + %.5f'%[a, b]] # sơ đồ đầu vào so với đầu ra pyplot.scatter[x,y].scatter[x,y] # Xác định một chuỗi các đầu vào giữa các đầu vào nhỏ nhất và lớn nhất được biết đến x_line=arange[min[x],max[x],1]= arange[min[x],max[x],1] # Tính đầu ra cho phạm vi y_line=objective[x_line,a,b]=objective[x_line,a, b] # Tạo một biểu đồ đường cho chức năng ánh xạ pyplot.plot[x_line,y_line,'--',color='red'].plot[x_line,y_line,'--',color='red'] pyplot.show[].show[] |
Kết hợp điều này lại với nhau, ví dụ dưới đây sử dụng đường cong phù hợp để tìm các tham số của một đường thẳng cho dữ liệu kinh tế của chúng tôi.
# phù hợp với một đường thẳng vào dữ liệu kinh tế
từ nhập khẩu Numpy Arange |
Từ Pandas Nhập READ_CSV
từ scipy.Optimize irport curve_fit
từ pyplot nhập khẩu matplotlib
# Xác định chức năng mục tiêu thực
Mục tiêu def [x, a, b]:
# Xác định chức năng mục tiêu thực Mục tiêu def [x, a, b]:objective[x,a,b,c]: returna *x+ba *x+b * x**2+c |
# Tải bộ dữ liệu
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 27 28 29 30 | # Chọn các biến đầu vào và đầu ra từ nhập khẩu Numpy Arangenumpy import arange Từ Pandas Nhập READ_CSVpandas import read_csv từ scipy.Optimize irport curve_fitscipy.optimize import curve_fit từ pyplot nhập khẩu matplotlibmatplotlib import pyplot # Xác định chức năng mục tiêu thực Mục tiêu def [x, a, b]:objective[x,a,b,c]: returna *x+ba *x+b *x**2+ c # Tải bộ dữ liệu url='//raw.githubusercontent.com/jbrownlee/Datasets/master/longley.csv'='//raw.githubusercontent.com/jbrownlee/Datasets/master/longley.csv' dataframe=read_csv[url,header=None]=read_csv[url,header=None] data=dataframe.values= dataframe.values # Chọn các biến đầu vào và đầu ra x,y=data[:,4],data[:,-1],y=data[:,4],data[:,-1] # đường cong phù hợp popt,_=curve_fit[objective,x,y],_=curve_fit[objective,x,y] # Tóm tắt các giá trị tham số a,b,c=popt,b,c=popt in ['y = %.5f * x + %.5f' %[a, b]]['y = %.5f * x + %.5f * x^2 + %.5f'%[a,b,c]] # sơ đồ đầu vào so với đầu ra pyplot.scatter[x,y].scatter[x,y] # Xác định một chuỗi các đầu vào giữa các đầu vào nhỏ nhất và lớn nhất được biết đến x_line=arange[min[x],max[x],1]=arange[min[x],max[x],1] # Tính đầu ra cho phạm vi y_line=objective[x_line,a,b,c]=objective[x_line, a,b,c] # Tạo một biểu đồ đường cho chức năng ánh xạ pyplot.plot[x_line,y_line,'--',color='red'].plot[x_line,y_line,'--',color='red'] pyplot.show[].show[] |
Kết hợp điều này lại với nhau, ví dụ dưới đây sử dụng đường cong phù hợp để tìm các tham số của một đường thẳng cho dữ liệu kinh tế của chúng tôi.
# phù hợp với một đường thẳng vào dữ liệu kinh tế |
từ nhập khẩu Numpy Arange
Từ Pandas Nhập READ_CSV
từ scipy.Optimize irport curve_fit
từ pyplot nhập khẩu matplotlib
# Xác định chức năng mục tiêu thực
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 27 28 29 | Mục tiêu def [x, a, b]: từ nhập khẩu Numpy Arangenumpy import arange Từ Pandas Nhập READ_CSVpandas import read_csv từ scipy.Optimize irport curve_fitscipy.optimize import curve_fit từ pyplot nhập khẩu matplotlibmatplotlib import pyplot # Xác định chức năng mục tiêu thực Mục tiêu def [x, a, b]:objective[x,a,b,c,d,e,f]: returna *x+b[a *x] +[b *x**2]+[c *x**3]+[d *x**4]+[e * x**5]+f # Tải bộ dữ liệu url='//raw.githubusercontent.com/jbrownlee/Datasets/master/longley.csv'='//raw.githubusercontent.com/jbrownlee/Datasets/master/longley.csv' dataframe=read_csv[url,header=None]=read_csv[url, header=None] data=dataframe.values=dataframe.values # Chọn các biến đầu vào và đầu ra x,y=data[:,4],data[:,-1],y=data[:,4], data[:,-1] # đường cong phù hợp popt,_=curve_fit[objective,x,y],_=curve_fit[objective,x,y] # Tóm tắt các giá trị tham số a,b,c,d,e,f=popt, b,c,d,e,f=popt # sơ đồ đầu vào so với đầu ra pyplot.scatter[x,y].scatter[x,y] # Xác định một chuỗi các đầu vào giữa các đầu vào nhỏ nhất và lớn nhất được biết đến x_line=arange[min[x],max[x],1]=arange[min[x],max[x],1] # Tính đầu ra cho phạm vi y_line=objective[x_line,a,b,c,d,e,f]= objective[x_line,a,b,c,d,e,f] # Tạo một biểu đồ đường cho chức năng ánh xạ pyplot.plot[x_line,y_line,'--',color='red'].plot[x_line, y_line,'--',color='red'] pyplot.show[].show[] |
Chạy ví dụ phù hợp với đường cong và vẽ kết quả, một lần nữa nắm bắt được nhiều sắc thái hơn một chút trong cách mối quan hệ trong dữ liệu thay đổi theo thời gian.
Biểu đồ của đa thức cấp độ năm phù hợp với bộ dữ liệu kinh tế
Điều quan trọng, chúng tôi không giới hạn trong hồi quy tuyến tính hoặc hồi quy đa thức. Chúng ta có thể sử dụng bất kỳ chức năng cơ sở tùy ý.
Ví dụ, có lẽ chúng tôi muốn một dòng có Wiggles để nắm bắt chuyển động ngắn hạn trong quan sát. Chúng ta có thể thêm một đường cong hình sin vào phương trình và tìm các tham số tích hợp tốt nhất phần tử này trong phương trình.
Ví dụ, một hàm tùy ý sử dụng sóng hình sin và đa thức cấp hai được liệt kê dưới đây:
# Xác định chức năng mục tiêu thực Mục tiêu def [x, a, b, c, d]:objective[x,a,b,c,d]: returna *sin [b-x]+c *x ** 2+da *sin[b- x]+c *x**2+d |
Ví dụ hoàn chỉnh về việc lắp một đường cong sử dụng chức năng cơ sở này được liệt kê dưới đây.
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 27 28 29 30 31 32 | # phù hợp với một dòng cho dữ liệu kinh tế từ tội lỗi nhập khẩu numpynumpy import sin từ SQRT nhập khẩu Numpynumpy import sqrt từ nhập khẩu Numpy Arangenumpy import arange Từ Pandas Nhập READ_CSVpandas import read_csv từ scipy.Optimize irport curve_fitscipy.optimize import curve_fit từ pyplot nhập khẩu matplotlibmatplotlib import pyplot # Xác định chức năng mục tiêu thực Mục tiêu def [x, a, b, c, d]:objective[x,a,b,c,d]: returna *sin [b-x]+c *x ** 2+da * sin[b-x]+c *x**2+d Ví dụ hoàn chỉnh về việc lắp một đường cong sử dụng chức năng cơ sở này được liệt kê dưới đây. url='//raw.githubusercontent.com/jbrownlee/Datasets/master/longley.csv'='//raw.githubusercontent.com/jbrownlee/Datasets/master/longley.csv' dataframe=read_csv[url,header=None] =read_csv[url,header=None] data=dataframe.values=dataframe.values # phù hợp với một dòng cho dữ liệu kinh tế x,y=data[:,4],data[:,-1],y= data[:,4],data[:,-1] từ tội lỗi nhập khẩu numpy popt,_=curve_fit[objective,x,y],_=curve_fit[objective, x,y] từ SQRT nhập khẩu Numpy a,b,c,d=popt,b,c,d=popt print[popt][popt] từ nhập khẩu Numpy Arange pyplot.scatter[x,y].scatter[x, y] Từ Pandas Nhập READ_CSV x_line=arange[min[x],max[x],1]=arange[min[x],max[x],1] từ scipy.Optimize irport curve_fit y_line=objective[x_line,a,b,c,d] =objective[x_line,a,b,c,d] # Tạo một biểu đồ đường cho chức năng ánh xạ pyplot.plot[x_line,y_line,'--',color='red'].plot[x_line,y_line, '--',color='red'] pyplot.show[].show[] |
từ pyplot nhập khẩu matplotlib
# Tải bộ dữ liệu
# Chọn các biến đầu vào và đầu ra
# đường cong phù hợp
# Tóm tắt các giá trị tham số
# sơ đồ đầu vào so với đầu ra
# Xác định một chuỗi các đầu vào giữa các đầu vào nhỏ nhất và lớn nhất được biết đến
# Tính đầu ra cho phạm vi
Chạy ví dụ phù hợp với một đường cong và vẽ kết quả.
- Chúng ta có thể thấy rằng việc thêm một sóng hình sin có hiệu ứng mong muốn cho thấy một câu đố định kỳ với xu hướng hướng lên cung cấp một cách khác để nắm bắt các mối quan hệ trong dữ liệu.
Cốt truyện phù hợp với sóng hình sin với bộ dữ liệu kinh tế
- Làm thế nào để bạn chọn phù hợp nhất?
- Nếu bạn muốn phù hợp nhất, bạn sẽ mô hình hóa vấn đề như một vấn đề học tập được giám sát hồi quy và kiểm tra một bộ thuật toán để khám phá điều gì là tốt nhất trong việc giảm thiểu lỗi.
Trong trường hợp này, việc lắp đường cong phù hợp khi bạn muốn xác định chức năng một cách rõ ràng, sau đó khám phá các tham số của chức năng của bạn phù hợp nhất với một dòng với dữ liệu.
- Đọc thêm
- Phần này cung cấp nhiều tài nguyên hơn về chủ đề nếu bạn đang muốn đi sâu hơn.
- Sách
Nhận dạng mẫu và học máy, 2006.
API
scipy.optimize.curve_fit API.
- numpy.random.randn API.
- Bài viết
- Đường cong phù hợp, wikipedia.
Bình phương tối thiểu phi tuyến tính, wikipedia.
Ask your questions in the comments below and I will do my best to answer.
Hồi quy đa thức, wikipedia.
Bản tóm tắt
Trong hướng dẫn này, bạn đã phát hiện ra cách thực hiện phù hợp với đường cong trong Python.
Cụ thể, bạn đã học được:
Optimization for Machine Learning
Đường cong phù hợp liên quan đến việc tìm các tham số tối ưu cho một hàm ánh xạ các ví dụ về đầu vào cho đầu ra.self-study tutorials with full working code on:
Gradient Descent, Genetic Algorithms, Hill Climbing, Curve Fitting, RMSProp, Adam, and much more...
Không giống như học tập có giám sát, đường cong phù hợp đòi hỏi bạn phải xác định chức năng ánh xạ các ví dụ về đầu vào cho đầu ra.
Your Machine Learning Projects
Cách sử dụng đường cong phù hợp trong SCIPY để phù hợp với một loạt các đường cong khác nhau cho một tập hợp các quan sát.