نخستین گام در یادگیری ماشین، بارگذاری داده ها در فایل برنامه است که این داده ها بر روی منبع های متفاوت مانند پایگاه داده های رابطه ای، داده های روی وب در غالب فایل های CSV و فرمت JSON و وب سایت ایجاد شده با تگ های اچ تی ام ال، فایل های اکسل، فایل های پی دی اف و مایکروسافت آفیس ورد، تصویر (تصویر های ماهاره ها، ماشین ها، چهره انسان و دیگر جاندارن، پزشکی) و و ویدیوها (شبکه های اجتماعی، دوربین های مدار بسته) همگی از داده هایی هستند که تولید آنها در حال رشد است.

گام های یادگیری ماشین

پاسخ دادن به پرسش ها بوسیله داده ها

در کتابخانه Scikit-Learn چندین منبع داده وجود دارند که به صورت استاندارد و مناسب برای انجام پروزه های ساده ای است که می خواهید آنها را برای آموزش یادگیری ماشین به کار ببرید. البته شما محدود به این منبع های داده درون Scikit-Learn نیستید، بلکه در جلوتر نشان داده ایم توسط ماژول Pandas می توانید منبع داده های متفاوت را درون برنامه خود درون یک ساختار داده استاندارد به نام DataFrame بارگذاری کنید.

همچنین در این مطلب بر روی دو واژه ویژگی (Feature) و برچسب (Label) مروری خواهیم داشت. این دو واژه در مطلب مفاهیم و واژگان یادگیری ماشین آموزش داده شده اند. در قطعه کد زیر ابتدا ماژول datasets از کتابخانه Scikit-Learn به درون فایل ضمیمه شده است. توجه کنید برای ضمیمه کردن کتابخانه Scikit-Learn  عبارت sklearn به کار گرفته شده است.

در خط سوم یک متغیر به نام iris از اجرای متد ()load_iris ایجاد می شود. این متد یک مجموعه داده (Dataset) به نام Iris را بارگذاری میکند که داده هایی در مورد گونه گیاهی را در خود نگه می دارد. در خط های چهارم و پنجم به ترتیب مقدارهای دو خصوصیت به نام های feature_names و target_names را نشان می دهیم.

در تصویر بالا می بینید که مجموعه داده Iris دارای ۴ ویژگی و ۳ برچسب است. هر ویژگی معادل یک خصوصیت (Attribute) مربوط به داده ها است. به طور مثال هر چهار ویژگی داده های Iris به صورت سانتی متر و طول برگ ها را نشان می دهند. در یادگیری ماشین واژه های ویژگی، خصوصیت، ورودی (Input)، متغیر وابسته (Independent Variable) همگی معادل یکدیگر هستند.

در یادگیری ماشین منظور واژه های برچسب (Label)، کلاس (Class)، پاسخ (Response)، خروجی (Output)، متغیر وابسته (Dependent Variable) و همچنین Target (یا هدف) همگی معادل یکدیگر هستند. مطابق شکل بالا این مجموعه داده ها دارای ۴ کلاس یا برچسب است که نشان می دهد بر اساس مقدارهای ۴ ویژگی، کلاس یا طبقه گیاه از کدام گونه گیاهی است.

مطابق شکل زیر می توانید خصوصیت به نام DESCR را برای نمایش توضیح مجموعه داده به کار ببرید. در شکل زیر می توانید نام خصوصیت ها (ویژگی ها) و نام کلاس ها (برچسب ها یا Target ها) را ببنید. همچنین می توانید کمترین، بیشترین و میانگین هر ویژگی (خصوصیت) را ببنید. بنابراین با توجه به شکل زیر برای مجموعه داده Iris چهار خصوصیت (یا ویژگی) به نام های sepal length و  sepal width و petal length و petal width وجود دارد. همچنین سه کلاس (برچسب) به نام های setosa و versicolor و virginica نیز وجود دارند.

برای نمایش مقدار ویژگی های درون مجموعه Iris (و یا هر مجموعه دیگری درون کتابخانه Scikit-Learn که بارگذاری کرده اید) باید مطابق شکل زیر باید خصوصیت data را به کار ببرید. خروجی آن یک آرایه دو بعدی (ماتریس) است که دارای ۴ ستون (به ازای هر ویژگی) و ۱۵۰ سطر است. همچنین برای نمایش مقدار عددی هر کدام از برچسب ها (یا همان Target ها) باید از خصوصیت target استفاده شود.

اگر به خروجی iris.target در شکل بالا نگاه کنید می بنید که به صورت یک آرایه تک بعدی یا به عبارتی به صورت یک بردار (Vector) از عددها است. ولی چرا عدد به جای سه نام کلاس یا برچسب نوشته شده است. در مطلب های مربوط به الکوریتم های رگرسیون (Regression) و کلاس بندی (Classification) توضیح داده ایم که الگوریتم رگرسیون نیاز به مقدارهای پیوسته (Continuous) و الگوریتم نیاز به مقدارهای ناپیوسته () دارد.

به عبارت دیگر در مسئله کلاس بندی به دنبال این هستیم که بدانیم بر اساس ویژگی ها یا همان مقدارهای ورودی (sepal length و  sepal width و petal length و petal width)، به طور نمونه یک گونه گیاهی مربوط به کدام کلاس (setosa یا versicolor یا virginica) از گیاهان است. اما در برخی از الگوریتم ها مانند رگرسیون خطی (Linear Regression) و یا الگوریتم K نزدیکترین همسایه () نیاز به داده های عددی داریم، پس باید مقدارهای رشته ای را تبدیل به مقدارهای عددی کنیم تا بتوانیم آنها را در الگوریتم به کار ببریم.

پس می بینید که کتابخانه Scikit-Learn از پیش این کار را انجام داده است و ما می توانیم به سادگی این مجموعه داده را در الگوریتم رگرسیون و کلاس بندی، مانند درخت تصمیم (Decesion Tree) به کار ببریم. توجه کنید اگر به نام (مقدار غیر عددی) برچسب ها (یا همان Target ها) نیاز داشتیم، می توانیم خصوصیت target_names را به کار ببریم که پیش از این توضیح داده بودیم.

در مطلب پاسخ دادن به پرسش ها بوسیله داده ها در مورد داده های برچسب دار و مجموعه داده های یادگیری (Training Data) و داده آزمایش (Test Data) صحبت شده است.

در دستور و شکل زیر می توانیم به ترتیب ابعاد ویژگی ها و برچسب های Iris را بوسیله خصوصیت shape نمایش دهیم. همانطور که می بینید خروجی iris.data.shape نشان می دهد که شامل۱۵۰ سطر (مشاهده، نمونه) و چهار ستون (ویژگی) است. ولی خروجی iris.target.shape یک بردار ۱۵۰ سطری است.

بنابراین هر سطح از مجموعه داده ها، برابر با یک مشاهده () یا نمونه () است. در مجموعه داده Iris که در این نوشته در مورد آن صحبت شد، ۱۵۰ نمونه از گونه های گیاه وجود دارد که برای هر یک چهار ویژگی گرد آوری شده است و بر اساس این ویژگی ها، هر نمونه به یک کلاس (برچسب) تعلق دارد.

سورس برنامه این مطلب Load scikit learn dataset