⚠️ هشدار: libsvm دارای متد های svmtrain و svmpredict است که svmtrain آن بر روی svmtrain خود متلب override شده و دیگر نمی توانید از آن استفاده کنید مگر آنکه مسیر آن را حذف کنید.
⚠️ نسخه ای که قرار داده شد تنها برای ویندوز های 64 بیتی کار میکند. برای نسخه 32 بیتی نیاز دارید که کد های C را خودتان کامپایل کنید.
#libsvm #svmtrain #svmpredict
@matlabtips
⚠️ نسخه ای که قرار داده شد تنها برای ویندوز های 64 بیتی کار میکند. برای نسخه 32 بیتی نیاز دارید که کد های C را خودتان کامپایل کنید.
#libsvm #svmtrain #svmpredict
@matlabtips
Forwarded from گنگ خواب دیده
Forwarded from مستور مست
جسمها چون کوزه های بسته سر
تا در آن کوزه چه باشد آن نگر
گر به مظروفش نظر داری ، شهی
گر به ظرفش عاشقی ، تو گمرهی
"مولوى"
@mastor_e_mast
تا در آن کوزه چه باشد آن نگر
گر به مظروفش نظر داری ، شهی
گر به ظرفش عاشقی ، تو گمرهی
"مولوى"
@mastor_e_mast
🔵مساله تطبیق منحنی(Curve Fitting)🔵
سطح پیچیدگی:🌕🌑🌑🌑🌑
پیشنیاز: برنامه نویسی مقدماتی
برای: مقدماتی و متوسط
فرض کنید مجموعه از نقاط به صورت دوتایی مرتب داریم و آن را رسم می کنیم:
سطح پیچیدگی:🌕🌑🌑🌑🌑
پیشنیاز: برنامه نویسی مقدماتی
برای: مقدماتی و متوسط
فرض کنید مجموعه از نقاط به صورت دوتایی مرتب داریم و آن را رسم می کنیم:
t = [0 0.3 0.8 1.1 1.6 2.3];
y = [0.6 0.67 1.01 1.35 1.47 1.25];
plot(t,y,'o')
title('Plot of y Versus t')
ممکن است حدس زده باشیم که این نقاط از یک قاعده پیروی میکنند. فرض کنید میخواهیم یک قاعده به صورت یک معادله درجه دوم از یک مجموعه داده استخراج کنیم. یک معادله درجه دوم چیزی به صورت زیر خواهد بود:
یافتن ضرایب a0 ، a1 و a2 به روش های مختلفی صورت می گیرد که در مساله ی کلی تر رگرسیون بررسی می شوند. متلب می تواند این ضرایب را برای شما پیدا کند. برای این منظور کافی است دستور polyfit را به صورت زیر استفاده کنیم:
و با دستور polyval مقدار آن را برای یک بازه حساب کنیم:
و نتیجه به صورت زیر است.
p = polyfit(t,y,2)
p =
-0.2942 1.0231 0.4981
و با دستور polyval مقدار آن را برای یک بازه حساب کنیم:
t2 = 0:0.1:2.8;
y2 = polyval(p,t2);
figure
plot(t,y,'o',t2,y2)
title('Plot of Data (Points) and Model (Line)')
و نتیجه به صورت زیر است.
حالا مهمترین پرسش این است که میان این همه تابع و حتی درجات مختلف برای توابع چگونه باید دست به انتخاب زد. این مطلبی است که به زودی به صورت مفصل در مورد آن بحث می کنیم.
#Curve_fitting #Regression #Guess
@MatlabTips
#Curve_fitting #Regression #Guess
@MatlabTips
🔵نحوه برخورد با مشکل زمان در الگوریتم ها🔵
سطح پیچیدگی:🌕🌑🌑🌑🌑
پیشنیاز: برنامه نویسی مقدماتی
برای: همه
مواقع زیادی پیش می آید که در انجام محاسبات دچار مشکل زمان می شویم. به این معنا که هر قدر روی کاغذ حساب می کنیم طول زمان اجرا به طور بسیار نامعقولی بالا است. اگر با این حالت مواجه شدید احتمالا به ترتیب با مشکلات زیر روبرو هستید:
1- درک نادرستی از مساله خود دارید. بهتر است دوباره به الگوریتم خود فکر کنید. به احتمال زیاد در قسمتی از کار خود به جای روش های بهینه تمام حالت های ممکن را بررسی می کنید. مثلا برای یافتن کوتاه ترین نقطه بین دو مسیر لازم نیست تمام مسیر های بین آنها چک شوند. برای این منظور بهتر است با کسی که بیشتر با موضوع آشناست مشورت کنید یا بیشتر در وب جستجو کنید.
2- اگر تا جای ممکن الگوریتم خودتان را بهینه کرده اید به دنبال راه حل های تقریبی( در صورت امکان) باشید. مثلا در بسیاری از مواقع یک راه حل شبه بهینه (suboptimal) کافی است. برای این منظور باید ادبیات مساله را جستجو کنید و به دنبال این راه حل ها باشید. گاهی اوقات هم می توانید از مجموعه داده خود یک نمونه بگیرید و روی کل آن کار نکنید.
3- اگر راه حل شبه بهینه به درد شما نمی خورد باید سراغ موازی سازی الگوریتم خود بروید. به دقت تمام قسمت های الگوریتم خود را بررسی کنید و ببینید که کدام قسمت ها می توانند به صورت جدا از هم اجرا شوند و تا پایان الگوریتم نیازی به داده های هم ندارند. به طور مثال چک کردن اینکه اعداد یک تا صدهزار کدام ها اول هستند را می توان به تقسیم بازه به تکه های 1000 تایی (یا هر اندازه دیگر) انجام داد زیرا محاسبه اینکه کدام عدد در بازه 1000 تا 2000 اول است ربطی به بازه 13000 تا 14000 ندارد.
4- اگر برنامه شما حتی قابلیت موازی سازی ندارد آنگاه احتمالا به طور ذاتی مساله سریال است مانند محاسبه عددی مساله سه جسم یا بیشتر الگوریتم های محاسبه رقم های پی. حتی ممکن است مساله شما در رده مسائل NP قرار بگیرد که تاکنون راه حل های با پیچیدگی چند جمله ای برای آن ها ارائه نشده است. در این صورت شما به مرز دانش رسیده اید و نباید نگران از ارائه راه حل های تقریبی باشید.
در قسمت بعدی به ارائه چند راه حل برای موازی سازی الگوریتم ها در متلب می پردازیم.
#Parallelization
@MatlabTips
سطح پیچیدگی:🌕🌑🌑🌑🌑
پیشنیاز: برنامه نویسی مقدماتی
برای: همه
مواقع زیادی پیش می آید که در انجام محاسبات دچار مشکل زمان می شویم. به این معنا که هر قدر روی کاغذ حساب می کنیم طول زمان اجرا به طور بسیار نامعقولی بالا است. اگر با این حالت مواجه شدید احتمالا به ترتیب با مشکلات زیر روبرو هستید:
1- درک نادرستی از مساله خود دارید. بهتر است دوباره به الگوریتم خود فکر کنید. به احتمال زیاد در قسمتی از کار خود به جای روش های بهینه تمام حالت های ممکن را بررسی می کنید. مثلا برای یافتن کوتاه ترین نقطه بین دو مسیر لازم نیست تمام مسیر های بین آنها چک شوند. برای این منظور بهتر است با کسی که بیشتر با موضوع آشناست مشورت کنید یا بیشتر در وب جستجو کنید.
2- اگر تا جای ممکن الگوریتم خودتان را بهینه کرده اید به دنبال راه حل های تقریبی( در صورت امکان) باشید. مثلا در بسیاری از مواقع یک راه حل شبه بهینه (suboptimal) کافی است. برای این منظور باید ادبیات مساله را جستجو کنید و به دنبال این راه حل ها باشید. گاهی اوقات هم می توانید از مجموعه داده خود یک نمونه بگیرید و روی کل آن کار نکنید.
3- اگر راه حل شبه بهینه به درد شما نمی خورد باید سراغ موازی سازی الگوریتم خود بروید. به دقت تمام قسمت های الگوریتم خود را بررسی کنید و ببینید که کدام قسمت ها می توانند به صورت جدا از هم اجرا شوند و تا پایان الگوریتم نیازی به داده های هم ندارند. به طور مثال چک کردن اینکه اعداد یک تا صدهزار کدام ها اول هستند را می توان به تقسیم بازه به تکه های 1000 تایی (یا هر اندازه دیگر) انجام داد زیرا محاسبه اینکه کدام عدد در بازه 1000 تا 2000 اول است ربطی به بازه 13000 تا 14000 ندارد.
4- اگر برنامه شما حتی قابلیت موازی سازی ندارد آنگاه احتمالا به طور ذاتی مساله سریال است مانند محاسبه عددی مساله سه جسم یا بیشتر الگوریتم های محاسبه رقم های پی. حتی ممکن است مساله شما در رده مسائل NP قرار بگیرد که تاکنون راه حل های با پیچیدگی چند جمله ای برای آن ها ارائه نشده است. در این صورت شما به مرز دانش رسیده اید و نباید نگران از ارائه راه حل های تقریبی باشید.
در قسمت بعدی به ارائه چند راه حل برای موازی سازی الگوریتم ها در متلب می پردازیم.
#Parallelization
@MatlabTips