2013-05-12 26 views
10

Có nhiều công cụ nối và nội suy như polyfit (hoặc thậm chí hộp công cụ logfit đẹp mắt này tôi tìm thấy here), nhưng dường như tôi không tìm thấy bất kỳ thứ gì phù hợp với chức năng sigmoid đối với dữ liệu x-y của tôi.Lắp sigmoid vào dữ liệu

Công cụ như vậy tồn tại hay tôi cần phải tự làm?

Trả lời

13

Nếu bạn có kê Toolbox cài đặt, bạn có thể sử dụng nonlinear regression với nlinfit:

sigfunc = @(A, x)(A(1) ./ (A(2) + exp(-x))); 
A0 = ones(size(A)); %// Initial values fed into the iterative algorithm 
A_fit = nlinfit(x, y, sigfunc, A0); 

Đây sigfunc chỉ là một ví dụ cho một hàm sigmoid và A là vector của các hệ số phù hợp.

+1

Tôi thấy sigfunc sau đây hữu ích hơn 'sigfunc = @ (A, x) (A (1) ./ (1 + exp (-A (2) * x))); ' – ohnoplus

+0

@ user92519 Không sao , Tôi chỉ đưa ra ví dụ này. –

+0

Xin chào. Bạn có ý gì bởi 'vector của các hệ số phù hợp'? –

1

Tôi khuyên bạn nên sử dụng Global Optimization Toolbox MATLAB, và đặc biệt là Genetic Algorithm Solver, mà bạn có thể sử dụng cho vấn đề của mình bằng cách tối ưu hóa (= tìm phù hợp nhất cho dữ liệu của bạn) các thông số của hàm sigmoid thông qua thuật toán di truyền. Nó có một giao diện đồ họa dễ sử dụng.

Các Genetic Algorithm Solver 's GUI, mà bạn có thể gọi bằng gatool: enter image description here

9

nlinfit, và đặc biệt là gatool, là búa lớn cho vấn đề này. Một sigmoid không phải là một chức năng cụ thể. Thông thường nó được thực hiện giống như chức năng hậu cần (thường là hiệu quả nhất để tính toán):

y = 1./(1+exp(-x)); 

hoặc logistic tổng quát. Nhưng tất cả các đường cong của đường cong đều có thể có sigmoidal shapes. Nếu bạn biết liệu dữ liệu của bạn có tương ứng với dữ liệu cụ thể hay không, việc lắp ghép có thể được cải thiện và các phương pháp hiệu quả hơn có thể được áp dụng. Ví dụ: error function (erf) có hình dạng sigmoidal và hiển thị trong số CDF của số normal distribution. Nếu bạn biết rằng dữ liệu của bạn là kết quả của quá trình Gaussian (tức là dữ liệu là CDF) và bạn có hộp công cụ Thống kê, bạn có thể sử dụng hàm normfit. Chức năng này dựa trên maximum likelihood estimation (MLE). Nếu bạn cần phải viết một hàm phù hợp tùy chỉnh - giả sử, vì lý do hiệu suất - tôi sẽ điều tra kỹ thuật MLE cho dạng sigmoid cụ thể mà bạn muốn phù hợp.