ابوالفضل وکیلی
ابوالفضل وکیلی
خواندن ۳ دقیقه·۵ سال پیش

پایتون و Train & Test

در این نوشته می خوام درباره Train/Test صحبت کنم.

یکسری روش هایی هستند که کارشون پیش بینی نتیجه بعضی از اتفاقات هست. در حقیقت برای اینکه بفهمیم مدلی که بهش رسیدیم به اندازه کافی خوب هست یا نه، می تونیم از روشی که به نام Train/Test نامیده میشه استفاده کنیم.

براستی Train/Test چیست؟

متدی هست که دقت یا accuracy مدلی که بهش رسیدیم اندازه گیری می کنه.

چرا اسمشو گذاشتن Train/Test؟

بخاطر این که دیتاست رو به دو تکه تقسیم می کنید :

  • training set
  • testing set

مثلا با 70 درصد داده ها برای یادگیری یا train اختصاص میابه و 30 درصد برای تست استفاده می شه.

در حقیقت مدلمون، میشه train
و ارزیابی یا تست مدل، میشه test

بذارید مثالی بزنم :

دیتاستی داریم که درباره اطلاعات صد تا مشتری هست (اعداد به صورت تصادفی انتخاب شده):

محور y نشون می ده که چه مقدار پول برای خرید کالا صرف شده
محور x هم زمان خرید رو نشون می ده

مثلا من رفتم یه بیسکوییت خریدم و مبلغش شده 20 هزار تومن و مدت زمانی که برای این خرید تو فروشگاه گذاشتم 3 دقیقه بوده!

الان می خوایم train و test رو مشخص کنید. (به نسبت 70 به 30 تقسیم کردم)

اگه موافق باشید، بیایین دیتاست train مونو ببینیم.
اونو با scatter plot می شه نشون داد :

بیایید مجموعه تست رو نمایش بدید.

بیایید دیتاست را Fit کنیم

به نظر من بهترین چیز برای نشون دادن fit ، یک رگرسیون چند جمله ای است ، بنابراین اجازه دهید یک خط از رگرسیون چند جمله ای ترسیم کنیم.

برای ترسیم خط، از متد ()plot از کتابخونه matplotlib استفاده شده :

حتی اگر بخواهیم مقادیر خارج از دیتاست را پیش بینی کنیم ، نتایج عجیبی به ما می دهد! مثلا : این خط نشان می دهد که مشتری در مدت زمان 6 دقیقه در فروشگاه می تواند 200 دلار خرید کند. که احتمالا این به overfitting بر می گرده.

اما مدلمون از نظر محاسبه R-squared چطوره؟
این امتیاز شاخص خوبی هست برای نشان دادن این که چه قدر داده های من مناسب انتخاب شده اند؟

امتیاز R2 یا امتیاز R-squared :

درحقیقت میاد ارتباط بین محور x و محور y رو اندازه گیری می کنه و مقدارش بین صفر و یک هست. جایی که صفره یعنی هیچ ارتباطی نداریم و جایی که 1 هست یعنی کاملا مرتبط هست.

ماژول sklearn یک متدی به نام ()rs_score داره که به ما کمک می کند تا این رابطه را پیدا کنیم.

در این حالت می خوایم رابطه بین دقایقی را که مشتری در مغازه می مونه و میزان پولی که خرج می کنه ، اندازه گیری کنیم.

مثال

با چه حالتی دیتا train من در یک رگرسیون چند جمله ای fit میشه؟ (نتیجه آیا بده؟ خوبه؟ چیه؟)

عددی که نتیجه نوشته می شه نشون می ده که رابطه خوبی وجود داره.

تست مدل train شده

الان می خوایم مدلی که در بالا درست کردیم رو تست کنیم :

مثال

می خوایم R2 رو برای این دیتاست test هم محاسبه کنیم :

نتیجه 0.809 نشان می دهد که مدل مجموعه تست fit هست و ما اطمینان داریم که می توانیم از مدل برای پیش بینی مقادیر استفاده کنیم.

پیش بینی مقادیر

اکنون که ثابت کردیم که مدل ما خوب است ، می توانیم مقادیر جدید را پیش بینی کنیم.

مثال

مشتری بعد از 5 دقیقه موندن توی فروشگاه چقدر پول خرج خواهد کرد؟

همون طور که در نمودار زیر می بینید این مقدار خرج با نمودار زیر تطابق داره :

خب به پایان این نوشته رسیدیم. امیدوارم براتون مفید بوده باشه.

از همراهیتون صمیمانه ممنونم ...

pythonپایتونtraintestداده کاوی
instagram : @a_vakily7
شاید از این پست‌ها خوشتان بیاید