پرسشکده مرجع پرسش و پاسخ فارسی ایران

مسئله‌ی مهم آن است که هرگز از سؤال‌کردن دست برندارید. برای هر حس کنجکاوی، یک پاسخ وجود دارد.

نمی دانید؟! بپرسید!

می دانید؟! پاسخ دهید!


سلام
من دارم روی یک مقاله شناسایی الگو کار می کنم، موضوعش Instance Selection هست.

من الگوریتم مقاله رو با متلب نوشتم و الآن به مرحله experimental results رسیدم
همونطور که می دونید تو این مرحله از همون روش k-fold استفاده می کنند.
من مفهومش رو کامل می دونم ولی نمی دونم چطوری پیاده سازیش می کنن.
تابع من می یاد از یک دیتاست آموزش یک سری داده رو انتخاب می کنه
بعد من میامدم همون تابع رو روی داده های تست انجام می دادم و بعد با استفاده از پیش بینی های درست accuracy رو محاسبه می کردم
(فرمول accuracy: کل الگوهایی که در تست نادرست دسته بندی شده اند تقسیم بر کل الگوهای مورد استفاده در تست. )
حالا تو k-fold واقعا نمی فهمم که چطور accuracy رو باید محاسبه کنم
(آخه به نظرم یک خروجی خواهم داشت، چطور می تونم تست و آموزش رو برای مقایسه جدا داشته باشم؟)
 فکر کنم مثلا اگر کد رو اینطوری بنویسم نرخ میانگین الگوهای انتخابی رو بهم می ده(؟)
می شه خواهش کنم برای accuracy تو کدش بهم کمک کنید.
واقعا ممنونم

MyData=data;
[m,n]=size(MyData);
indices = crossvalind('Kfold',m,3);
sum=0;
 for i = 1:3
            test = (indices == i); train = ~test;
            TestData=MyData(test,1:n);
            TrainData=MyData(train,:);
        main(MyData);
                 
 end

تابعی که من نوشتم main هست.
نقش crossvalind دادن اندیس های تست و آموزش هست؟

1 پاسخ 1

ببین فرض کن data شامل 1200 تا نمونه هستش، اگر بخوای از روش 10 تا (10-fold) استفاده کنی تابع crossvalind این 1200 نمونه رو با یکبار فراخوانی بصورت رندم به 10 گروه 120 تایی افراز (cvpartition) می کنه
بعد تو باید 10 بار کدتو تکرار کنی هر بار یکی از این گروه ها رو برای تست کنار میزاری و با 9 گروه دیگه مدلتو آموزش می دی
مثل کد زیر

foldcount = 10;
cv  = cvpartition(Targets, 'kfold', foldcount);   

for f = 1 : foldcount 
            display(f);
           
            training = find(cv.training(f));
            test = find(cv.test(f));

            P = Inputs(:, training);
            T = Targets(training);

            Pt = Inputs(:, test);
            Tt = Targets(test);

            % train                       
            model= your_model_train(P, T, other_parameters);

            % test
            Rt = your_model_simulation(model, Pt);
            outputs(f, :) = calculate(Tt, Rt);
        end
       
        finals(1, :) = min(outputs);
        finals(2, :) = max(outputs);
        finals(3, :) = mean(outputs);
        finals(4, :) = std(outputs);

تایع calculate هم باید خودت بنویسی که acuracy رو برات حساب کنه توی همین پرسشکده جستجو کنی نمونه کدش هست من لینکشو برات پیدا کردم

آیا برای محاسبه sensetivity و specificity متلب تابع خاصی دارد؟



من پاسخ بهتری دارم !


عبارت های جستجو شدهعبارت های جستجو شده

(شناسایی الگو) (مقاله شناسایی آماری الگو) ()