Machine Learning(ML), Deep Learning(DL)

یادگیری ماشین، یادگیری عمیق

یادگیری ماشین، شیوه‌ها و الگوریتم‌هایی هستند که بر اساس آن‌ها رایانه‌ها و برنامه ها توانایی یادگیری پیدا می‌کنند. هدف یادگیری ماشین این است که ماشین بتواند به با افزایش داده‌ها کارایی بهتری در انجام وظیفهٔ مورد نظر پیدا کند.

کتاب پایتون مقدماتی
طبقه بندی موضوعی

دیتاست به مجموعه ای از داده ها اطلاق می شود، که هر مورد آن(هر سطر از آن) به نمونه مستقلی اختصاص دارد. هر ستون ویژگی یا داده ای خاص از هر نمونه می باشد. فرض کنید دیتاستی از مشخصات ظاهری افراد را داشته باشیم. هر سطر از این دیتا ست مربوط به یک نفر می باشد. مثلا سطر اول برای محمد، سطر دوم برای مهدی و ... ستون های دیتاسیت نیز هر کدام ویژگی خاصی را توصیف می کنن، مثلا ستون اول قد، ستون دوم وزن و ... همین تعداد سطرها و ستون ها مهمترین ویژگی دیتا ست ها هستند که به آن تعداد نمونه و تعداد ویژگی گفته می شود. اگر بخواهیم دیتاست را به صورت جدول نمایش بدهیم، شکلی شبیه زیر خواهد داشت.

 

ممکن است دیتا ست لیبل گزاری شده باشد(عنوان دار باشد). برای نمونه دیتاست فوق را در نظر بگیرید که اطلاعاتی نظیر وزن و قد وفشار خون افرادی را نمایش می دهد، حال چنانچه مشخص گردد، هر سطر این دیتا ست به یک زن یا مرد اختصاص دارد، این دیتا ست نوعی دیتا ست لیبل گزاری شده می باشد. 

 

 

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

 

برای نصب پایتورچ ابندا مطمئن شوید که پایتون روی سیستم شما نصب است و حداقل نسخه آن 3.6 باشد. برای این کار می توانید ستور زیر را در ترمنال خود اجرا نمائید.

 

python --version

 

 

بررسی نصب بودن پایتون

 

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

 

pip install torch

 

بعد از نصب برای اطمینن از نصب می توانید از دستور زیر استفاده نمائید.

pip list

 

 

 

با اجرای این دستور لیست پکیج نصب شده نشان داده می شود. چنانچه پایتورچ با موفقیت نصب شده باشد در لیست پکیج های نصب شده به هماره نسخه نصب شده نمایش داده می شود.

 

در یادگیری ماشین ما تنسور را هما جا می بینیم. حتی گوکل فریم ورکی نیز برای یادگیری ماشین به نام تنسورفلو دارد.آرایه های سه بعدی که در نامپای می بینید تنسور هستند. حالا شاید این سوال پیش بیاید که آرایه هایی با ابعاد پایین تر چه عنوان فنی دارند.
اسکالر(Scaler): آرایه هایی با بعد صفر یا همان اعداد واحد و تنها اسکالر ها هستند

1،-500،1.2،...


برداها(Vectors): آرایه هایی که بعد یک دارند بردار یا وکتور نامیده می شوند و در دو دسته بردار های سطری و ستونی گروه بندی می شوند

[1,3,5,7,9]
ماتریس ها: ماتریس ها بردارهای دو بعدی هستند و دارای تعدادی درایه در سطر ها و ستون های خود هستند.

[[1,2,3],
[2,4,6,8],
[1,3,5,7]]

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

 

 

لیست ها برای ذخیره چندین مقدار در متغیر کاربرد دارند. آیتم های لیست امکان ذخیره مقادیر تکراری را دارد. در یک لیست با مقادیرتکراری ممکن است لازم باشد تا مقادیر واحد و یونیک را استخراج کنیم. روش های بسیاری برای استخراج و بدست آورد مقادیر واحد از یک لیست وجود دارد. به عنوان نمونه لیست زیر را در نظر بگیرید:

cities=['Tabriz','Tehran','Mashhad','Shiraz', 'Tabriz']

در این لیست تعریف شده اسامی چندین شهر ذخیره شده است ولی هماهنگونه که می بینید دارای مقدار تکراری نیز می باشد. فرض کنید بخواهیم شهرهای تکراری را حذف و مقادیر واحد و یونیک را بدست بیاوریم. کد زیر یکی از معمول ترین روش ها برای استخراج مقادیر واحد لیست می باشد.

unique_list = []
for city in cities:
   if city not in unique_list:
       unique_list.append(city)

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

list(set(cities))

 

 

لیست ها برای ذخیره چندین مقداردر یک متغیربه کار می روند. لیست ها یکی از 4 نوع داده ای هستند که در پایتون برای ذخیره مجموعه ای از داده ها کاربرد دارند. تعریف یک لیست در پایتون خیلی ساده است و با دو براکت انجام می شود. در دستور زیر من یک لیست ساده تعریف کردم و اسم چند رنگ را در آن دخیره کرده ام.


colors=['White','Black','Red','Blue','Yello']


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


print(colors[1])

 

 

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

 

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

1- لیست ها

2- تاپل ها

3-  مجموعه ها

4- دیکشنری ها

5- آرایه ها

6- توابع

7- لامبدا

8- جی سان

9- رجکس

10- کار با فایل ها و فولدرها

 

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