آموزش زبان برنامه نویسی R، قسمت ششم

آموزش زبان برنامه نویسی R، قسمت ششم

با پیگیری قسمت‌های قبل می‌توانید تحلیل‌های خود را بر روی داده‌ها انجام دهید. در این قسمت مقداری ويژگی‌های پرکاربرد را بررسی می‌کنیم.


تغییر ترتیب داده‌های دیتاست به صورت تصادفی
در بسیاری از تحلیل‌ها نیاز می‌شود که ترتیب داده‌های دیتاست را تغییر دهیم تا دقت بهتری بدست ‌آوریم و یا اینکه الگوریتم‌ها را به درستی تست کنیم. مثلاً زمانی که می‌خواهید از cross-validation استفاده کنید باید ترتیب داده‌ها را به هم بریزید و یا زمانی که می‌خواهید از یک دیتاست مقداری را به عنوان داده تست جدا کنید نیاز دارید که ترتیب داده‌ها را به صورت تصادفی درآورید. این کار به عنوان resampling داده‌ها شناخته می‌شود.


data <- read.csv (file = "dataset.csv")
resampling <- sample(data, nrow(data), replace = TRUE)
resampledData <- data[resampling,]

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

تکنیک‌های افزایش سرعت
تا جایی که امکان دارد دستورات print و write را درون حلقه‌ها ننویسید و به جای آن نتیجه حلقه را در یک آبجکت ذخیره کنید سپس آن را در فایل بنویسید یا محتوای آن را چاپ کنید.


x <- vector(length=1000000)  #11.1 seconds
for (i in 1:1000000) {
   x[i] <- i
}
write.csv(file="temp.csv", x)

استفاده از وکتورها به جای حلقه‌ها در عملیات محاسباتی مناسب است  توابعی که در استفاده از وکتورها مورد استفاده قرار می‌گیرند مانند لیست زیر هستند.


Sum,cumsum, diff, rowSums, colSums, rowMeans, colMeans, ifelse

استفاده از توابع بالا نسبت به حلقه سرعت بالاتری دارند.
البته همیشه استفاده از وکتور باعث افزایش سرعت نمی‌شود. تنها عملیاتی که توسط زبان ++C نوشته شده‌اند دارای سرعت بالا هستند. برای مثال در تابع ()apply که کامل توسط R نوشته شده سرعت بالایی ندارد و به جای آن بهتر است از تابع lapply استفاده شود.

می‌توان کد R را تبدیل به بایت کد کرد یا به عبارتی دیگر آن را کامپایل کرد. برای این منظور باید از بسته‌ای به نام compiler بهره برد.

قسمت‌هایی از کد R که بحرانی هستند بهتر است به جای R توسط زبان سطح پایین‌تری مانند ++C استفاده کرد. برای این منظور استفاده از R2cpp را می‌توان استفاده کرد.

برخی الگوریتم‌ها و برنامه‌ها را می‌توان به صورت موازی اجرا کرد و یا برای اجرای آن از چند پردازنده بهره برد. برای این کار نیز snow، doparallel می‌توان استفاده کرد.

خطایابی
یکی از روش‌های مرسوم در خطایابی استفاده از چاپ محتویات یک شی در شرایطی خاص است. این کار توسط print یا cat  انجام می‌شود.
اما همانطور که در محیط های توسعه زبان‌های دیگر مفهومی شبیه breakpoint وجود دارد. برای ایجاد breakpoint کافی است که قبل از اعداد نشان دهنده خط کد کلیک کنید. البته برای استفاده از این breakpoint ها باید اجرا را توسط دکمه source انجام دهیم.

همچنین می‌توان از traceBack  نیز به منظور فراخوانی نزدیک‌ترین و بهترین تابعی که دچار خطا شده است استفاده کرد.
علاوه بر آن می‌توان از دو دستور options و browser نیز جهت خطایابی می‌توان بهره برد.

امیدوارم این سری آموزش‌ها را بخوبی استفاده کرده باشد.

برای دستیابی به آموزش قسمت های قبل به لینک های زیر مراجعه کنید:

آموزش زبان برنامه نویسی R، قسمت پنجم

آموزش زبان برنامه نویسی R، قسمت چهارم

آموزش زبان برنامه نویسی R، قسمت سوم

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

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

 

امین  خزاعی

امین خزاعی

امین، برنامه نویس سیستمی و امنیت و ساکن شیراز. عاشق گنو/ لینوکس و نرم افزار آزاد. امین اعتقاد دارد همیشه باید برای توسعه نرم افزارهای آزاد و گسترش فرهنگ آزادی در نرم افزار وقت گذاشت.


0 نظر درباره‌ی این پست نوشته شده است.

ثبت نظر