خانه » پیش بینی مقادیر مفقود شده با رگرسیون خطی و جنگل تصادفی در پایتون

پیش بینی مقادیر مفقود شده با رگرسیون خطی و جنگل تصادفی در پایتون

برای متخصصین علم  داده ، رسیدگی به داده های از دست رفته بخش مهمی از فرآیند پاکسازی داده ها و توسعه مدل است. در این پست ، ما در مورد چگونگی ساختن مدلهایی که می توانند برای جایگزینی مقادیر گمشده یا خراب در داده ها استفاده شوند ، بحث خواهیم کرد.
برای اهداف ما ، ما با مجموعه داده های نوشیدنی کار خواهیم کرد که در اینجا می توانید پیدا کنید.
برای شروع ، بیایید داده ها را به صورت دیتافریم در پانداز بخوانیم:

پنج ردیف اول را چاپ می کنیم.

بیایید یک نمونه تصادفی  500 تایی  از این داده ها بگیریم. این به سرعت بخشیدن به آموزش و آزمون مدل (model training and testing) کمک می کند ،  به راحتی می توانید ایم مقدار را تغییر دهید:

حال ، از دستور info استفاه می کنیم که به ما کمک می کند  کدام ستون ها مقادیر مفقود شده دارند:

چندین ستون کمتر از 500 مقدار غیر تهی دارند که با مقادیر مفقود شده مطابقت می کند. ابتدا بیایید ساختن مدلی را که  مقادیر “قیمت (price)” گم شده را  با استفاده از “امتیاز (points)” جایگزاری می کند  را  در نظر بگیریم. برای شروع ، بیایید همبستگی (correlation) بین “قیمت” و “امتیاز” را چاپ کنیم:

 

می بینیم که همبستگی مثبت ضعیفی وجود دارد. بیایید یک مدل رگرسیون خطی (linear regression model)  ایجاد کنیم که از “امتیاز” برای پیش بینی “قیمت” استفاده می کند. ابتدا ماژول “LinearRegresssion” را از “scikit-Learn” وارد می کنیم:

 

 می خواهیم  داده های خود را برای آموزش و آزمون تقسیم کنیم ، اما برای پیش بینی های خود باید از قیمت های معتبر استفاده کنیم.  پس دیتافریم  را بر اساس مقادیر مثبت قیمت  فیلتر می کنیم:

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

برای اعتبار سنجی مدل از K-fold cross  استفاده خواهیم کرد. 

اکنون می توانیم ورودی و خروجی خود را تعریف کنیم:

حال مدل رگرسیون خود را فیت (fit) می کنیم.

در کد زیر پیش بینی های خود را تولید و ذخیره می کنیم:

حال بیایید عملکرد مدل خود را ارزیابی کنیم. بگذارید از خطای میانگین مربعات برای ارزیابی عملکرد مدل استفاده کنیم:

می بینیم که عملکرد خیلی عالی نیست. ما برای بهوبد می توانیم عملکرد را با آموزش در  قیمت های محدود شده تا مرز میانگین قیمت به علاوه یک انحراف استاندارد بهبود ببخشیم:

در حالی که این ترفند به طور قابل توجهی عملکرد را بهبود می بخشد ، اما این روش به قیمت عدم توانایی تشخیص مقادیر دقیق نوشیدنی های بسیار گران قیمت تمام می شود. به جای مدل رگرسیون که از یک ویژگی (single feature) استفاده می کند،   می توانیم از مدل های مبتنی بر درخت(tree base models)  مانند جنگل های تصادفی (random forests)  برای پیش بینی قیمت استفاده کنیم که می تواند از متغیرهای کمی و کیفی استفاده کند. بیایید یک مدل رگرسیون جنگلی تصادفی ایجاد کنیم که از “کشور” ، “استان” ، “تنوع” ، “کارخانه” و “امتیاز” برای پیش بینی “قیمت” نوشیدنی استفاده کند. ابتدا ، متغیرهای کیفی  را به کد تبدیل می کنیم که توسط مدل جنگل های تصادفی قابل استفاده باشد:

بیایید اندازه نمونه تصادفی را به 5000 افزایش دهیم:

در گام بعد ،  ماژول رگرسیون جنگل تصادفی را از scikit-Learn  واردمی کنیم. سپس لیستی از ویژگی هایی که برای آموزش مدل خود استفاده خواهیم کرد نیز تعریف کنیم:
 
 

حال مدل خود را با استفاده از یک جنگل تصادفی با n_estimators = 1000 و max_depth = 1000 موزش می دهیم. سپس پیش بینی هایی را تولید  و آنها را در لیست جدیدی اضافه می کنیم:

در آخر ، بیایید خطای میانگین مربعات  را برای هر دو مدل جنگل تصادفی و  رگرسیون خطی ارزیابی کنیم:

می بینیم که مدل جنگل های تصادفی از عملکرد بسیار بهتری برخوردار است. اکنون ، می خواهیم مقادیر قیمت گمشده  را با استفاده از مدل هایمان  پیش بینی کنیم:

در اینجا شما را تشویق می کنم که در انتخاب ویژگی ها و تنظیم پارامترها بیش از اندازه بازی کنید تا ببینید آیا می توانید عملکرد را بهبود ببخشید.  بعلاوه ، من شما را تشویق می کنم که این الگو  را گسترش دهید تا مقادیر گمشده را در متغیرهای کیفی از  جمله “region_1” و “designation’” بدست آورید.

 

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

به بالای صفحه بردن