برای ایجاد یک مدل، مجموعه ای داریم که می توانیم از آن برای ایجاد مدل استفاده کنیم ولی همیشه مجموعه داده اضافی برای ارزیابی مدل وجود ندارد. در این حالت می توانیم مجموعه داده اصلی را به دو زیر مجموعه یادگیری (Training Data) و مجموعه داده آزمایش (Test Data) تقسیم کنیم. در مطلب ایجاد مدل رگرسیون ساده توسط رگرسیون خطی ساده در Scikit-Learn توضیح دادیم که توسط اسلایس بندی (برش) آرایه های NumPy دو مجموعه داده یادگیری diabets_X و مجموعه داده آزمایش diabets_y را ایجاد کردیم. در واقع هدف از مجموعه داده های یادگیری برای ایجاد مدل و مجموعه داده های آزمایش، برای ارزیابی کارایی مدل است.

آنچه که پیش از این در مورد ایجاد مجموعه داده های یادگیری و آزمایش توسط اسلایس بندی آرایه ها گفتیم، یک مشکل داشت و آن اینکه ایجاد مجموعه داده های یادگیری و آزمایش به صورت تصادفی انجام نشده است. کتابخانه Scikit-Learn برای پوشش این مشکل کلاسی به نام ()train_test_split در غالب ماژول sklearn.select_model فراهم کرده است که اجازه می دهد به صورت تصادفی از مجموعه داده های اصلی، دو زیر مجموعه داده یادگیری و مجموعه داده آزمایش را ایجاد کنیم.

اما اندازه مجموعه داده های یادگیری و آزمایش چند درصد از کل مجموعه داده ها باشد؟ چگونه توسط ()train_test_split از sklearn.model_selection تعیین کنیم که چند درصد از کل مجموعه داده ها برای داده های یادگیری و چند درصد برای داده های آزمایش باشند.؟ به طور معمول ۳۰ در صد یا کمتر (۲۵ یا ۲۰ درصد) از داده های اصلی برای داده های آزمایش و مابقی برای داده های یادگیری مورد استفاده قرار می گیرند. الگوی ()train_tesst_split در زیر آمده است.

دو آرگومان اول می توانند آرایه های NumPy، لیست های پایتون یا DataFrame کتابخانه Pandas باشند و به ترتیب بیانگر ویژگی ها و برچسب از مجموعه داده هستند. آرگومان ها یا گزینه هایی (Option) هستند که به ترتیب رفتار ()train_test_split را برای ایجاد دو مجموعه یادگیری و آزمایش تعیین می کنند.

test_size آرگومانی است با مقدار عدد ممیز شناور (اعشاری) که میزان درصدی را تعیین می کند که از مجموعه داده های اولیه برای ایجاد داده های آزمایش می خواهیم ایجاد کنیم. به طور مثال اگر مقدار آن برابر با 0.25 باشد، به این معنی است که ۲۵ درصد از داده های اصلی برای داده های آزمایش و ارزیابی مدل و 75 درصد باقی ماند برای داده های یادگیری استفاده می شوند. ولی اگر مقدار آن برابر با 0.30 باشد، به این معنی است که ۳۰ درصد برای داده های آزمایش و ۷۰ درصد باقی مانده برای داده های یادگیری استفاده شوند.

train_size آرگومانی است با عملکرد شبیه test_size با این تفاوت که از آن برای تعیین اندازه مجموعه داده یادگیری از مجموعه داده اصلی استفاده می شود. به طور مثال اگر اندازه آن برابر با 0.80 باشد، پس اندازه مجموعه یادگیری برابر با ۸۰ درصد از کل مجموعه اصلی و ۲۰ درصد باقی مانده برای مجموعه آزمایش باقی می ماند. تنها در صورتی از آن استفاده کنید که آرگومان test_size استفاده نشده باشد.

random_state آرگومانی است عدد صحیح که مقدار Seed را برای ایجاد عددهای تصادفی در زمان شکستن (Split) مجموعه داده اصلی تعیین می کند.

در کد  زیر پس از اینکه مجموعه داده های اعداد نوشته شده با دست (Hand-Written Digits) درون کتابخانه Scikit-Learn توسط متد ()load_digits به درون برنامه بارگذازی شد، پس از آن و توسط ()train_test_split دو مجموعه داده یادگیری و آزمایش ایجاد می شوند. توجه کنید چون آرگومان test_size برابر 0.2 است، پس ۲۰ درصد از مجموعه داده های به عنوان داده های آزمایش خواهند بود و مابقی برای داده های یادگیری استفاده می شود.

در کتابخانه Scikit-Learn خروجی ()train_test_split باید در چهار متغیر ذخیره شود که در مثال بالا آنها را X_train و X_test و y_train و y_test نامگذاری کرده ایم. در مطلب های پیش رو و بوسیله الگوریتم رگرسیون لوجستیک (Logestic Regression) به شما نشان داده ایم که چگونه از طریق مجموعه داده های ارقام (Digits Dataset) بتوانیم عددهای نوشته شده با دست را شناسایی کنیم.