پیاده‌سازی قسمت‌های ۱۵ و ۱۶ ویدیو‌های درک برنامه‌نویسی جادی در R یا چی می شه اگر ۵۰ نفر در یک اتاق…

وبلاگ جادی یکی از وبلاگ‌هاییه که مرتب بهش سر می‌زنم و در واقع اولین جایی بود که من با زبان‌ R آشنا شدم. ایشون تو وبلاگشان و سری ویدیو‌های درک برنامه‌نویسی‌ این مساله جالب را با پایتون حل کرده:

چی می شه اگر ۵۰ نفر در یک اتاق نفری ۱۰۰ دلار داشته باشن. در هر دور هر کس به شکل رندم یک نفر رو انتخاب می کنه و یک دلار از پولش رو به اون می ده. اگر پول کسی تموم بشه از بازی بیرون گذاشته می شه. بعد از بارها بازی کردن، وضعیت پول ها چطور خواهد بود؟

و از آن جایی که این مساله برای من خیلی جالب بود تصمیم گرفتم  آن را با R حل کنم، فقط در نظر داشته باشید که من یک برنامه‌نویس به معنای واقعی نیستم و کدهای این پست ممکن است مشکلاتی اساسی داشته باشند.

بیشتر بخوانید

یادگیری ماشین در R — بخش دوم، الگوریتم k-NN

اولین الگوریتمی که در این سری از پست‌ها به آن می‌پردازیم، الگوریتم K- near­est neigh­bours یا به اختصار k-NN نام دارد. این الگوریتم  یکی از ساده‌ترین الگوریتم‌های یادگیری ماشینی است و به دسته‌ای از این الگوریتم‌ها به نام الگوریتم‌های clas­si­fi­ca­tion (طبقه‌بندی) تعلق دارد. الگوریتم‌های clas­si­fi­ca­tion در یادگیری ماشینی و آمار، الگوریتم‌هایی هستند که مشخص می‌کنند با توجه به یک مجموعه‌ی داده موجود و مورد استفاده به منظور آموزش که شامل مشاهداتی است که عضویتشان در یک دسته موجود است، یک مشاهده جدید به کدام یک از مجموعه دسته‌ها( زیرجمعیت‌ها) تعلق دارد. این الگوریتم در دسته‌ای از الگوریتم‌های یادگیری ماشین به نام یادگیری با نظارت قرار می‌گیرد.

بیشتر بخوانید

مروری بر RTVS

RTVS">

RTVS مخفف R tools For visu­al stu­dio یک سری افزونه در Microsoft Visu­al Stu­dio است که این نرم‌افزار را به یک IDE نسبتا مناسب برای زبان R تبدیل می‌کند. از مزیت‌های آن نسبت به Rstu­dio می‌توان به سیستم فایل بهتر و امکان استفاده بهتر از زبان‌های برنامه‌نویسی دیگر در کنار آن اشاره کرد. البته قبل از این Rstu­dio را پاک کنید باید به این نکته اشاره کنم که بعد از دانلود و اجرای فایل نصب یک مگابایتی Visu­al Stu­dio و گذاشتن تیک نصب R، هنوز هم ۶ یا ۷ گیگابایتی باید دانلود کنید و اگر نصب اینترنتی کار نکند باید فایل نصب ۲۰ یا ۲۳ گیگابایتی آن را دانلود کنید. Rstu­dio هم از آن طرف پشتیبانی خوبی از چندین پکیج پرکاربرد و قوی دارد که استفاده از آنها در RTVS کمی مشکلتر است. بر خلاف RStu­dio، نمی‌توان از RTVS در لینوکس و مک استفاده کرد و RTVS فقط با نسخه‌های ۶۴ بیتی R بر روی ویندوزهای ۶۴ بیتی کار می‌کند. در RTVS می‌توان از هر دو نسخه R معمولی و MRO استفاده نمود. در کل نمی‌توان این دو گزینه را جایگزین یکدیگر دانست. اما اگر به هر دلیل خواستید با این نرم‌افزار کار کنید با ادامه‌ی این پست همراه باشید.

بیشتر بخوانید

یادگیری ماشین در R — بخش یک و نیم، طبقه‌بندی الگوریتم‌های یادگیری ماشینی

قرار بود این پست درباره‌ی اولین الگوریتم این سری به نام k-NN باشد اما متاسفانه من به این نکته توجه نکرده بودم که بدون ارایه‌ی یک طبقه‌بندی مناسب برای این الگوریتم‌ها، کار نوشتن درباره‌ی آنها سخت خواهد شد. برای طبقه‌بندی این الگوریتم‌ها به دو روش عمل می‌شود:

  • طبقه‌بندی بر اساس نحوه یادگیری
  • طبقه‌بندی بر اساس کاربرد و شباهت بین الگوریتم‌ها

بیشتر بخوانید

چگونه در R آنالیز واریانس (آنووا) یک‌طرفه انجام دهیم

گاهی اوقات پیش می‌آید که بخواهیم میانگین چند جامعه یا گروه را با هم مقایسه کنیم، مثلا فرض کنید شرکتی با سه پیمانکار A ، B و C قرارداد دارد و می‌خواهد بداند که آیا میانگین یکی از مشخصات محصولات این سه پیمانکار با هم تفاوتی دارند یا نه. برای این کار روشی آماری به نام آنالیز واریانس یا  Anova وجود دارد. در این پست قرار است ببینیم که چطور می‌شود از آنالیز واریانس یک‌طرفه(یا یک‌راهه) استفاده کرد.

بیشتر بخوانید

حل مدل‌های برنامه‌ریزی عدد صحیح و MILP با استفاده از R

در مطلب قبلی، به حل یک مدل برنامه‌ریزی خطی با استفاده از پکیج lin­prog پرداختیم، کار با این پکیج ساده است اما همانطور که گفتیم، محدودیت‌‌هایی دارد و نمی‌تواند مسائل برنامه‌ریزی عدد صحیح یا مسائل برنامه‌ریزی مختلط (Mixed Inte­ger Pro­gram­ming) را حل کند، برای این کار، به سراغ پکیج  دیگری به نام lpSolve می‌رویم. این پکیج را با دستور زیر نصب کنید:

بیشتر بخوانید

مقدمه‌ای بر شبیه‌سازی در R، روش مونت‌کارلو

یکی از کاربرد‌های کمتر شناخته‌شده‌ی R، استفاده از آن برای شبیه‌سازی است. شبیه‌سازی سیستم‌های گسسته‌ پیش‌آمد(DES) ، سیستم‌های صف و روش‌های مانند مونت‌کارلو رایج‌ترین شبیه‌سازی‌هایی هستند که در R انجام می‌شوند. البته این را هم در نظر داشته باشید که R کمی تا قسمتی کند است و چیزی که آن را برای شبیه‌سازی مطلوب کرده این است که بسیاری از محققینی که زمینه‌ی آماری دارند R را به زبان‌ها و ابزارهای دیگر ترجیح می‌دهند، از طرف دیگر، متن‌باز بودن R  مزیت آن در این زمینه در مقابل Mat­lab است. از آنجایی که این وب‌سایت درباره‌ی R و مخلفاتش است، پرداختن به مبحث شبیه‌سازی در آن خالی از لطف نیست. تقریبا هر جایی که مبحث شبیه‌سازی مطرح می‌شود، روش مونت‌کارلو اولین روشی است که مورد بحث قرار می‌گیرد.

بیشتر بخوانید

انواع ساختار‌‌های داده در R، بخش پایانی

در پست قبلی، با ماتریس و data frame (معادل‌های چارچوب‌داده یا داده چارچوب‌دار برای آن پیشنهاد شده است) آشنا شدیم. این ساختارهای داده، دو بعدی بودند و معمولا هر ردیف آن، نماینده یک مشاهده و هر ستون آن نماینده یک مشخصه بود. فرض کنید داده‌ای داریم که نیازمند بعد زمان نیز هست. مثلا چهار دانش‌آموز، سه امتحان را در دو هفته پشت سر گذاشته‌اند و می‌خواهیم به جای این که یک ماتریس جداگانه برای هر هفته داشته باشیم، در یک ساختار داده همه چیز را خلاصه کنیم، در اینجا ساختار داده‌ای به نام Array کار ما را راه می‌اندازد. داده‌های اولیه را در R به وجود می‌آوریم:

بیشتر بخوانید

انواع ساختار‌‌های داده در R، بخش دوم ماتریس و Data.frame

ماتریس، یک ساختار دو بعدی برای داده است. تمام عناصر یک ماتریس باید از یک نوع باشند.(numeric, log­i­cal, char­ac­ter, com­ple). درست همانند بردارها، اگر عناصری که به یک ماتریس می‌دهید چند نوع باشند R در ماتریس نهایی همه‌ی آنها را به یک نوع تبدیل خواهد کرد. (به این عمل اگر اشنباه نکنم Coerc­ing می‌گویند.) چندین راه برای به وجود آوردن یک ماتریس در R وجود دارد. به عنوان مثال می‌توانیم دو یا چند بردار را با دستورهای cbind و rbind به صورت ستونی یا ردیفی به هم بچسبانیم:

بیشتر بخوانید

انواع ساختارهای داده‌ در R، بخش اول، بردارها

بردارها

بردار تقریبا پایه‌ای‌ترین ساختار داده در R  است. بردار ساختاری است که مجموعه‌ای از مقادیر مرتب‌شده به نام عنصر را در خود ذخیره می‌کند. یردار را می‌‌توان معادل یک ستون در نرم‌افزارهایی چون اکسل و spss دانست. یک بردار می‌تواند هر تعداد عنصر داشته باشد با این شرط که نوع تمام عناصر یکسان باشد، به عنوان مثال، یک بردار نمی‌تواند هم شامل عدد و هم شامل متن باشد. برای تشخیص نوع عناصر یک بردار می‌توانید از دستور زیر استفاده کنید:

بیشتر بخوانید