در دیگر نوشتارهای مجله فرادرس، مفهوم رگرسیون خطی و همچنین نحوه محاسبات آن را خوانده‌اید. در این نوشتار قرار است با کدهای پایتون برای رگرسیون خطی، تکنیک رگرسیون خطی را در حالت ساده و چندگانه در این زبان برنامه‌نویسی و کتابخانه‌های آن اجرا کنیم. این آموزش در دو بخش که در زیر ذکر شده‌اند، ارائه می‌شود:

  • بخش اول: در این قسمت، مباحث اولیه و اساسی مربوط به رگرسیون خطی آورده شده و فرمول‌های مرتبط نیز ارائه می‌شوند.
  • بخش دوم: کدها و برنامه‌هایی که برای مدل‌سازی رگرسیون خطی ساده و چندگانه در پایتون لازم است در این قسمت ارائه می‌شوند.

برای آشنایی بیشتر با مفاهیم اولیه در رگرسیون خطی، نوشتارهای رگرسیون خطی — مفهوم و محاسبات به زبان ساده، رگرسیون خطی چندگانه (Multiple Linear Regression) — به زبان ساده را بخوانید. همچنین خواندن مطلب هم خطی در مدل رگرسیونی — به زبان ساده نیز خالی از لطف نیست.

کدهای پایتون برای رگرسیون خطی

به منظور پیاده‌سازی «رگرسیون خطی ساده» (Simple Linear Regression) و «رگرسیون چندگانه» (Multiple Regression) و بررسی فرضیات آن به یک مجموعه داده احتیاج داریم که در قسمت اول این نوشتار، به بررسی آن می‌پردازیم.

در مجموعه داده‌ای که مربوط به 1030 مشاهده از مقاوت فشاری کامل (Complete Compressive Strength) یک ترکیب از مواد اولیه مختلف است، هشت متغیر توصیفی مطابق با فهرست زیر قرار دارد.

  1. سیمان (Cement)، برحسب کیلوگرم در مخلوط یک متر مکعب.
  2. سربار کوره بلند (Blast Furnace Slag)، برحسب کیلوگرم در مخلوط یک متر مکعب.
  3. خاکستر (Fly Ash)، برحسب کیلوگرم در مخلوط یک متر مکعب.
  4. آب (Water)، برحسب کیلوگرم در مخلوط یک متر مکعب.
  5.  پلاستیزایر (Superplasticizer)، برحسب کیلوگرم در مخلوط یک متر مکعب.
  6. ماسه درشت دانه (Coarse Aggregate)، برحسب کیلوگرم در مخلوط یک متر مکعب.
  7. ماسه ریز دانه (Fine Aggregate)، برحسب کیلوگرم در مخلوط یک متر مکعب.
  8. طول عمر (Age) برحسب روز که در محدوده ۱ تا ۳۶۵ قرار دارد.

این مجموعه داده‌ها را می‌توانید با نام Concrete_Data.csv از اینجا با قالب فشرده دریافت کنید. در تصویر زیر نمونه‌ای از داده‌های این فایل را در اکسل مشاهده می‌کنید.

Concrete data head

کدهای پایتون برای اجرای رگرسیون خطی

برای انجام تحلیل رگرسیونی روی مجموعه داده Concrete_Data.csv به کتابخانه‌های numpy, pandas, matplotlib احتیاج داریم. بارگذاری و فراخوانی این کتابخانه‌ها در کد زیر صورت گرفته است.

فرض بر این است که فایل داده، در محل پیش‌فرض (Working Directory) پایتون قرار دارد. در غیر اینصورت باید مسیر دسترسی به این فایل را نیز در تابع pd.read_csv مشخص کنید. به این ترتیب متغیرهای توصیفی (مستقل) در متغیر x و مقادیر متغیر وابسته در y ثبت می‌شوند.

تفکیک داده‌ها به دو بخش آموزشی و آزمایشی

در این قسمت، مشاهدات را به دو گروه آموزشی (Training Set) و آزمایشی (Test Set) تقسیم می‌کنیم. این کار توسط کتابخانه sklearn صورت می‌گیرد.

همانطور که مشخص است ۸۰٪ از داده‌ها برای بخش آموزش و ۲۰٪ برای آزمایش در نظر گرفته شده‌اند.

رگرسیون خطی با کتابخانه sklearn

به کمک کتابخانه sklearn و کلاس LinearRegression، محاسبات مربوط به مدل رگرسیونی در متغیر lm ثبت می‌شود. نتیجه مقادیر برازش شده توسط مدل نیز برای داده‌های آموزشی محاسبه می‌شود.