500 likes | 698 Views
جامعة تشرين كلية الهندسة الميكانيكية والكهربائية قسم هندسة الحاسبات والتحكم الآلي السنة الخامسة – الفصل الأول التعرف على النماذج – عملي.
E N D
جامعة تشرين كلية الهندسة الميكانيكية والكهربائية قسم هندسة الحاسبات والتحكم الآلي السنة الخامسة – الفصل الأول التعرف على النماذج – عملي الجلسة الثانية الاربعاء 23/10/2013مقدمة في التصنيف Classificationتشرح للفئة الثانية 9:30 – 11:00تشرح للفئة الثالثة 11:00 – 12:30 تشرح للفئة الرابعة 12:30 – 02:00 الدراسة من النوطة \ مركز التصوير مهندسو العملي محمد كفا – وسيم أحمد – بهاء الدين هاشم
التصنيفClassification • توزيع أنواع مختلفة من البيانات على مجموعات مستقلة ومن ثم القيام بضم أي عنصر جديد إلى المجموعة الموافقة له بالمزايا والخصائص. • إيجاد قانون التصنيف.
مجموعة أزهار فيشرFisher Iris Data Set • Versicolor
مجموعة أزهار فيشرFisher Iris Data Set • Virginica (virginia)
مجموعة أزهار فيشرFisher Iris Data Set • 150 samples • 50 setosa • 50 versicolor • 50 virginica • Features : • sepal length in cm • sepal width in cm • petal length in cm • petal width in cm
مجموعة أزهار فيشرFisher Iris Data Set • MATLAB : meas 150 * 4 , species 150 * 1 • load fisheriris
مجموعة أزهار فيشرFisher Iris Data Set • meas(:,1) • meas(:,:,:,1) • Species
مجموعة أزهار فيشرFisher Iris Data Set load fisheriris gscatter(meas(:,1), meas(:,2), species,'rgb','osd'); xlabel('Sepal length'); ylabel('Sepal width');
مجموعة أزهار فيشرFisher Iris Data Set • load fisheriris
مجموعة أزهار فيشرFisher Iris Data Set • gscatter(meas(:,1), meas(:,2), species,'rgb','osd');
Linear discriminant analysis class = classify(sample,training,group) linclass= classify(meas(:,1:2),meas(:,1:2),species); bad = ~strcmp(linclass,species); numobs = size(meas,1); % number of rows in meas matrix sum(bad) / numobs ans= 0.2000
Species Matrix • linclass = classify(meas(:,1:2),meas(:,1:2),species);
Linclass Matrix • linclass = classify(meas(:,1:2),meas(:,1:2),species);
Bad Matrix • bad = ~strcmp(linclass,species);
Bad Matrix • 30 misclassification of 150 (error 20%) numobs = size(meas,1); sum(bad) / numobs ans = 0.2000
Linear discriminant analysismissclassificaton • plot(meas(bad,1), meas(bad,2), 'kx');
Linear discriminant analysis • [x,y] = meshgrid(4:.1:8,2:.1:4.5); • x = x(:); • y = y(:); • j = classify([x y],meas(:,1:2),species); • gscatter(x,y,j,'grb','sod')
quad discriminant analysis • quadclass = classify(meas(:,1:2),meas(:,1:2),species,'quadratic'); • bad = ~strcmp(quadclass,species); • sum(bad) / numobs • ans = • 0.2000
أشجار القرارDecision trees • tree = treefit(meas(:,1:2), species); • [dtnum,dtnode,dtclass] = treeval(tree, meas(:,1:2)); • bad = ~strcmp(dtclass,species); • sum(bad) / numobs • ans = • 0.1333
أشجار القرارDecision Tree • tree = treefit(meas(:,1:2), species);
أشجار القرارDecision Tree • treedisp(tree,'name',{'SL' 'SW'})
أشجار القرارDecision Tree • [dtnum,dtnode,dtclass] = treeval(tree, meas(:,1:2)); • [dtnum,dtnode,dtclass] = treeval(tree, meas(:,1:2)); • dtclass (like linclass but for tree classification) • Dtnode (node selected for each decision) • Dtnum (number of class for each decision)
أشجار القرارDecision Tree • [grpnum,node,grpname] = treeval(tree, [x y]); • gscatter(x,y,grpname,'grb','sod')
أشجار القرارDecision Tree • resubcost = treetest(tree,'resub'); • التابع يحسب كلفة الشجرة tree وهو مجموع أخطاء التصنيف. في كل مرة يتم اقتطاع • عشرة بالمائة من أفرع الشجرة.
أشجار القرارDecision Tree [cost,secost,ntermnodes,bestlevel] = treetest(tree,'cross',meas(:,1:2),species);
أشجار القرارDecision Tree • plot(ntermnodes,cost,'b-', ntermnodes,resubcost,'r--') • figure(gcf); • xlabel('Number of terminal nodes'); • ylabel('Cost (misclassification error)') • legend('Cross-validation','Resubstitution')
أشجار القرارDecision Tree • plot(ntermnodes,cost,'b-', ntermnodes,resubcost,'r--')
أشجار القرارDecision Tree • [mincost,minloc] = min(cost); • cutoff = mincost + secost(minloc); • hold on • plot([0 20], [cutoff cutoff], 'k:')
أشجار القرارDecision Tree • plot(ntermnodes(bestlevel+1), cost(bestlevel+1), 'mo')
أشجار القرارDecision Tree • legend('Cross-validation','Resubstitution','Min + 1 std. err.','Best choice') • hold off
أشجار القرارDecision Tree • prunedtree = treeprune(tree,bestlevel); • treedisp(prunedtree)