Hàm mô hình, f(x,…). Nó phải lấy biến độc lập làm đối số đầu tiên và các tham số phù hợp làm đối số còn lại riêng biệt
xdata array_like hoặc đối tượngBiến độc lập nơi dữ liệu được đo lường. Thường phải là một chuỗi độ dài M hoặc một mảng hình (k,M) cho các hàm có k bộ dự đoán, nhưng thực tế có thể là bất kỳ đối tượng nào
ydata mảng_likeDữ liệu phụ thuộc, một mảng độ dài M - trên danh nghĩa là >>> def func(x, a, b, c): .. return a * np.exp(-b * x) + c 3
p0 array_like, tùy chọnDự đoán ban đầu cho các tham số (độ dài N). Nếu Không, thì tất cả các giá trị ban đầu sẽ là 1 (nếu số lượng tham số cho hàm có thể được xác định bằng cách sử dụng nội quan, nếu không thì Lỗi Giá trị sẽ tăng lên)
sigma Không có hoặc chuỗi độ dài M hoặc mảng MxM, tùy chọnXác định độ không đảm bảo trong ydata. Nếu chúng ta định nghĩa phần dư là >>> def func(x, a, b, c): .. return a * np.exp(-b * x) + c 4, thì việc giải thích sigma phụ thuộc vào số thứ nguyên của nó
Một sigma 1-D phải chứa các giá trị độ lệch chuẩn của lỗi trong ydata. Trong trường hợp này, chức năng được tối ưu hóa là >>> def func(x, a, b, c): .. return a * np.exp(-b * x) + c 5
Một sigma 2-D phải chứa ma trận hiệp phương sai của các lỗi trong ydata. Trong trường hợp này, chức năng được tối ưu hóa là >>> def func(x, a, b, c): .. return a * np.exp(-b * x) + c 0
Mới trong phiên bản 0. 19
Không (mặc định) tương đương với sigma 1-D chứa đầy những cái
absolute_sigma bool, tùy chọnNếu Đúng, sigma được sử dụng theo nghĩa tuyệt đối và hiệp phương sai tham số ước tính pcov phản ánh các giá trị tuyệt đối này
Nếu Sai (mặc định), chỉ có độ lớn tương đối của các giá trị sigma mới quan trọng. Ma trận hiệp phương sai tham số được trả về pcov dựa trên sigma chia tỷ lệ theo hệ số không đổi. Hằng số này được đặt bằng cách yêu cầu chisq giảm cho các tham số tối ưu bật lên khi sử dụng sigma được chia tỷ lệ bằng đơn vị. Nói cách khác, sigma được chia tỷ lệ để phù hợp với phương sai mẫu của phần dư sau khi điều chỉnh. Mặc định là Sai. Về mặt toán học, >>> def func(x, a, b, c): .. return a * np.exp(-b * x) + c 1
check_finite bool, tùy chọnNếu Đúng, hãy kiểm tra xem các mảng đầu vào không chứa nans infs và tăng ValueError nếu có. Đặt tham số này thành Sai có thể âm thầm tạo ra kết quả vô nghĩa nếu mảng đầu vào có chứa nans. Mặc định là Đúng
giới hạn 2-bộ của array_like, tùy chọnGiới hạn dưới và trên của các tham số. Mặc định là không có giới hạn. Mỗi phần tử của bộ dữ liệu phải là một mảng có độ dài bằng số lượng tham số hoặc là một đại lượng vô hướng (trong trường hợp đó, giới hạn được coi là giống nhau cho tất cả các tham số). Sử dụng >>> def func(x, a, b, c): .. return a * np.exp(-b * x) + c 2 với một ký hiệu thích hợp để vô hiệu hóa giới hạn trên tất cả hoặc một số tham số
Mới trong phiên bản 0. 17
phương thức {‘lm’, ‘trf’, ‘dogbox’}, tùy chọnPhương pháp sử dụng để tối ưu hóa. Xem >>> def func(x, a, b, c): .. return a * np.exp(-b * x) + c 3 để biết thêm chi tiết. Mặc định là 'lm' cho các vấn đề không bị ràng buộc và 'trf' nếu các giới hạn được cung cấp. Phương pháp 'lm' sẽ không hoạt động khi số lượng quan sát nhỏ hơn số lượng biến, sử dụng 'trf' hoặc 'dogbox' trong trường hợp này
Mới trong phiên bản 0. 17
jac có thể gọi được, chuỗi hoặc Không, tùy chọnHàm có chữ ký >>> def func(x, a, b, c): .. return a * np.exp(-b * x) + c 4 tính toán ma trận Jacobian của hàm mô hình đối với các tham số dưới dạng cấu trúc giống như mảng dày đặc. Nó sẽ được thu nhỏ theo sigma được cung cấp. Nếu Không có (mặc định), Jacobian sẽ được ước tính bằng số. Chuỗi từ khóa cho các phương pháp 'trf' và 'dogbox' có thể được sử dụng để chọn lược đồ sai phân hữu hạn, xem >>> def func(x, a, b, c): .. return a * np.exp(-b * x) + c 3
Mới trong phiên bản 0. 18
full_output boolean, tùy chọnNếu True, hàm này trả về thông tin bổ sung. infodict, mesg và ier
Mới trong phiên bản 1. 9
**kwargsĐối số từ khóa được chuyển đến >>> def func(x, a, b, c): .. return a * np.exp(-b * x) + c 6 cho >>> def func(x, a, b, c): .. return a * np.exp(-b * x) + c 7 hoặc >>> def func(x, a, b, c): .. return a * np.exp(-b * x) + c 3 nếu không
Mảng trả về mảngCác giá trị tối ưu cho các tham số sao cho tổng các phần dư bình phương của >>> def func(x, a, b, c): .. return a * np.exp(-b * x) + c 9 được giảm thiểu
pcov mảng 2 chiềuHiệp phương sai ước tính của popt. Các đường chéo cung cấp phương sai của ước tính tham số. Để tính toán một lỗi độ lệch chuẩn trên các tham số, hãy sử dụng >>> def func(x, a, b, c): .. return a * np.exp(-b * x) + c 00
Tham số sigma ảnh hưởng như thế nào đến hiệp phương sai ước tính phụ thuộc vào đối số absolute_sigma, như được mô tả ở trên
Nếu ma trận Jacobian tại giải pháp không có thứ hạng đầy đủ, thì phương thức 'lm' trả về một ma trận chứa đầy >>> def func(x, a, b, c): .. return a * np.exp(-b * x) + c 2, mặt khác, phương thức 'trf' và 'dogbox' sử dụng nghịch đảo giả Moore-Penrose để tính toán ma trận hiệp phương sai
infodict dict (chỉ được trả lại nếu full_output là True)một từ điển các đầu ra tùy chọn với các phím
>>> def func(x, a, b, c): .. return a * np.exp(-b * x) + c 02Số lần gọi hàm. Các phương thức 'trf' và 'dogbox' không tính các lệnh gọi hàm cho xấp xỉ Jacobian bằng số, trái ngược với phương thức 'lm'
>>> def func(x, a, b, c): .. return a * np.exp(-b * x) + c 03Các giá trị hàm được đánh giá tại giải pháp
>>> def func(x, a, b, c): .. return a * np.exp(-b * x) + c 04Một hoán vị của ma trận R của phân tích thừa số QR của ma trận Jacobian gần đúng cuối cùng, cột được lưu trữ thông minh. Cùng với ipvt, hiệp phương sai của ước lượng có thể xấp xỉ. Phương pháp 'lm' chỉ cung cấp thông tin này
>>> def func(x, a, b, c): .. return a * np.exp(-b * x) + c 05Một mảng số nguyên có độ dài N xác định ma trận hoán vị, p, sao cho fjac*p = q*r, trong đó r là tam giác trên với các phần tử đường chéo có độ lớn không tăng. Cột j của p là cột ipvt(j) của ma trận đơn vị. Phương pháp 'lm' chỉ cung cấp thông tin này
>>> def func(x, a, b, c): .. return a * np.exp(-b * x) + c 06Vectơ (hoán vị(q) * fvec). Phương pháp 'lm' chỉ cung cấp thông tin này
Mới trong phiên bản 1. 9
mesg str (chỉ trả về nếu full_output là True)Một thông báo chuỗi cung cấp thông tin về giải pháp
Mới trong phiên bản 1. 9
ier int (chỉ trả về nếu full_output là True)Cờ số nguyên. Nếu nó bằng 1, 2, 3 hoặc 4, giải pháp đã được tìm thấy. Nếu không, giải pháp không được tìm thấy. Trong cả hai trường hợp, biến đầu ra tùy chọn mesg cung cấp thêm thông tin
Mới trong phiên bản 1. 9
Tăng giá trịLỗinếu ydata hoặc xdata chứa NaN hoặc nếu các tùy chọn không tương thích được sử dụng
Lỗi runtimenếu tối thiểu hóa bình phương nhỏ nhất không thành công
Tối ưu hóaCảnh báonếu hiệp phương sai của các tham số không thể được ước tính
Xem thêm
>>> def func(x, a, b, c): .. return a * np.exp(-b * x) + c 3Giảm thiểu tổng bình phương của các hàm phi tuyến
>>> def func(x, a, b, c): .. return a * np.exp(-b * x) + c 08Tính hồi quy bình phương nhỏ nhất tuyến tính cho hai bộ phép đo
ghi chú
Người dùng phải đảm bảo rằng các đầu vào xdata, ydata và đầu ra của f là >>> def func(x, a, b, c): .. return a * np.exp(-b * x) + c 09, nếu không quá trình tối ưu hóa có thể trả về kết quả không chính xác
Với >>> def func(x, a, b, c): .. return a * np.exp(-b * x) + c 7, thuật toán sử dụng thuật toán Levenberg-Marquardt cho đến >>> def func(x, a, b, c): .. return a * np.exp(-b * x) + c 6. Lưu ý rằng thuật toán này chỉ có thể xử lý các vấn đề không bị ràng buộc
Các ràng buộc hộp có thể được xử lý bằng các phương thức 'trf' và 'dogbox'. Tham khảo chuỗi tài liệu của >>> def func(x, a, b, c): .. return a * np.exp(-b * x) + c 3 để biết thêm thông tin