![]() |
نحوه کلاسه بندی
توی متلب چه طوری میشه یه سری داده رو طبقه بندی کرد و بعد اونها رو train کرد
یه نمونه کد ساده هم باشه خوبه ممنون |
با سلام
سوالتان کمی گنگ است من با زمینه فکری خودم پاسخ می دم. تا جاییکه من اطلاع دارم متلب دستور خاصی برای دسته بندی ندارد (این فرآیند استاندارد نیست) بلکه ابزارهایی را فراهم کرده که در پروسه دسته بندی بسیار مفید هستند. بطور کلی شما باید کارهای زیر رو انجام بدید: 1- داده های آموزشی (Train) را در قالب ساختاری مشخص و صریح تبدیل کنید مثلا فرض کنیم هر آیتم شما دارای 200 ویژگی می باشد و شما 10000 آیتم دارید پس بهتر است با دستوراتی که در متلب وجود دارد یا بوسیله کد اختصاصی خودتان آنها را به یک ماتریس 200*10000 تبدیل کنید. یعنی 10000 رکورد داشته باشید که هر رکورد مربوط به یک آیتم است و می دانیم هر آیتم مثلا 200 ویژگی دارد. 2- از یک الگوریتم یادگیرنده برای آموزش استفاده کنیم؛ معمولا تنوع این الگوریتم ها باعث می شود نتوان فقط یک راه حل را پیشنهاد داد و کاملا وابسته به هدف مسئله و نوع پروژه دارد (توجه داشته باشید که مسئله دسته بندی در کاربردها و علوم متنوعی استفاده می شود از زیر گرایش های هوش بگیرید تا رشته هایی همچون کشاورزی و ...، که من مقالاتی را در آنها دیده ام) - از جمله می توان به شبکه عصبی، svm، بوستینگ؛ Naive Bayesian و مواردی از این قبیل اشاره کرد. 3- حالا یادگیرنده می داند مثلا شی x دارای رکوردی به فرم مثلا y می باشد 4- باید یک (چند) نمونه آزمایشی (Test) تهیه و دقیقا به فرک داده های آموزشی تبدیل کنید یعنی هر رکورد دارای 200 ویژگی که در یک ردیف از یک ماتریس 200*1 ذخیره شده است، آن را به الگوریام یادگیرنده بدهید و بهترین پاسخ را دریافت کنید. ملاحضات» * مسلم است که ممکنه پاسخ غلط باشد به همین علت معمولا در مرحله آزمایش تعداد قابل توجهی نمونه را تست می کنیم تا بتوانیم اطلاعات آماری از میزان عملکرد الگوریتم مان بدست آوریم (مثلا بر حسب درصد) البته توجه داشته باشید در این خصوص متریک های استانداری همچون نمودار ROC موجود است که فرم علمی ارائه گزارش در این خصوص می باشد. * معمولا وقتی میخواهیم داده ها را به دو بخش آموزش و آزمایش تقسیم کنیم پیشنهاد می شود حدود 60% کل داده ها را برای آموزش و 40% را برای آزمایش جدا کنیم و این بدیهی است که نباید داده ها با یکدیگر همپوشانی داشته باشند (یعنی هم در آموزش و هم در آزمایش استفاده شوند) موفق باشید |
خیلی ممنون از پاسختون...
برای آشنایی با بحث کلاسه بندی میخوام یه مسئله ساده رو حل کنم.... داخل یه متغیر(myvar) مقدار زیادی عدد اعشاری دارم ...تنها فیچرشون هم اینکه که اگر با صفر شروع بشن(مثل 0.5) جزو گروه 1 اگر با 1 شروع بشن(مثل 1.5) جزو گروه 2 و اگر با 2 شروع بشن جزو گروه 3 بعد که کلاسه بندی انجام شد میخوام تعدادی داده رو اموزش بدم و چندتا هم تست کنم(در این قسمت میشه از الگوریتم knn استفاده کرد؟) |
با سلام
همین که شما سه دسته داده دارید مسئله رو از حالت باینری به مالتی کلاس تبدیل می کنه! و کار به همون اندازه سخت میشه پس تفاوتی چندانی نداره وقتی شما سه کلاس داشته باشید یا مثلا 20 تا. KNN هم یک کلاسیفایر است که دارای مزیت هایی می باشد ولی از بزرگترین مشکلاتش زمان مصرفی است. با توجه به اطلاعات شما که از مطالبتان می شود استخراج کرد بهتره از KNN استفاده کنید زیرا نسبت به سایر روش ها به مراتب ساده تر است. سه لینک زیر راهنمای خوبی هستند k-nearest neighbor classification - MATLAB - MathWorks Deutschland Fit k-nearest neighbor classifier - MATLAB - MathWorks Deutschland Code: K-Nearest neighbor classification using euclid distance - Naotoshi Seo موفق باشید |
تا الان چندین بار اون قسمت هایی که گفتید توی help متلب زیر رو کردم...اما چیزی نفهمیدم
میشه مرحله وار با شبه کد توضیح بدید؟ ممنون میشم |
نقل قول:
|
سلام
من برای تمرین پایانی شناسایی الگو م اومدم ماتریس ویژگیمو با استفاده از روش liu استخراج کردم و یه کلاسیفایر bdf طراحی کردم. حالا یه مشکلی دارم،قسمت اخر سوالو متوجه نمیشم و اینکه گفته شده کد knn رو خودمون بنویسیمفقط تا فردا وقت دارم ممنون میشم کمکم کنید. قسمت اخر سوال: براي استفاده از روش KNN به منظور طراحي يك دسته بندي كننده ي چهره چه ايده اي مي توانيد ارائه دهيد؟. نتايج را با دسته بندي كننده ي BDF مقايسه كنيد. |
نقل قول:
پس نوشتن تابع kNN کار سختی نیست. کافیست فاصله داده را با سایر داده ها محاسبه و بر حسب فاصله k داده ی نزدیک به داده ی ورودی را انتخاب کنید. |
این داده x رو باید بر چه اساسی انتخاب کنم؟
یعنی یه سمپل رو در نظر بگیرم فاصلشو با بقیه پیدا کنم و این کارو با یه حلقه برای 1000 تا داده ام انجام بدم؟درست متوجه شدم؟ خیلی ممنون از راهنماییتون مهندس |
نقل قول:
در بعضی مسائل داده های تست و آموزش جداگانه وجود دارند و در بعضی دیگر مسائل یک مجموعه داده ارائه شده است که شما باید آن را به داده ی آموزشی و داده ی تست تقسیم کنید. مثلا اگر شما ۵۰۰ تا داده باشید می توانید ۳۰۰ تا را برای آموزش و ۲۰۰ تا برای تست استفاده کنید(نسبت تعداد داده های آموزشی به داده های تست در هر مسئله متفاوت است و اینجا فقط برای روشن شدن مسئله اعداد ۳۰۰ و ۲۰۰ بکار رفته است. ). موفق باشید |
زمان محلي شما با تنظيم GMT +3.5 هم اکنون ۱۲:۵۸ قبل از ظهر ميباشد. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.