مجله هوش مصنوعی

آخرین اخبار و تکنولوژی های هوش مصنوعی را در اینجا بخوانید.

مجله هوش مصنوعی

آخرین اخبار و تکنولوژی های هوش مصنوعی را در اینجا بخوانید.

مهارت‌های کاربردی برای مهندس یادگیری ماشین و هوش مصنوعی


دنیا همگام‌ با پیشرفت فناوری‌های یادگیری ماشین (ML) و هوش مصنوعی (AI)، در حال تغییر و تحول است و به همین دلیل نیاز به مهندس یادگیری ماشین و هوش مصنوعی محسوس‌تر شده است.  ML و AI در بسیاری از دستگاه‌ها، از سیستم‌های آندروید گوشی‌های همراه و سایر دستگاه‌های الکترونیک گرفته تا خودروهای خودران، نقش مهمی ایفا کرده‌اند. اهمیت این نقش به صورت روزافزون در حال افزایش است، به طوری که برآورد می‌شود طی دو سال آینده، هوش مصنوعی بیش از ۲ میلیون فرصت شغلی ایجاد کند.

بر اساس گزارشات شرکت Market & Markets، انتظار می‌رود ارزش بازار یادگیری ماشینی که در سال ۲۰۱۶ معادل ۱ میلیاد دلار بود، در سال ۲۰۲۲ به ۹ میلیارد دلار برسد؛ این ارقام حاکی از یک CAGR (نرخ رشد مرکب سالانه) ۴۴ درصدی هستند. طبق پیش‌بینی‌ها، بازار هوش مصنوعی نیز تا قبل از سال ۲۰۲۵ به یک صنعت ۱۹۰ میلیارد دلاری تبدیل خواهد شد. این روند رو به رشد باعث شده تقاضای مشاغل مهندس یادگیری ماشین و هوش مصنوعی به میزان چشم‌گیری افزایش یابد.

در این نوشتار، علاوه بر فرصت‌های شغلی ML و AI، مهارت‌های لازم و برنامه‌های اعطاکننده گواهینامه‌های مربوطه را نیز معرفی می‌کنیم.

فرصت‌های شغلی هوش مصنوعی

با افزایش کاربرد ML و AI، مشاغل موجود در این حوزه‌ها دقیق‌تر و تخصصی‌تر می‌شوند. در این قسمت، برخی از این مشاغل و میانگین درآمد سالانه‌ی آن‌ها را معرفی می‌کنیم:

  • مهندس هوش مصنوعی: مهندسان هوش مصنوعی موظف به حل مسئله، ساخت مدل‌های هوش مصنوعی و آزمایش و پیاده‌سازی آن‌ها هستند. علاوه بر این، باید قادر به مدیریت زیرساخت‌های هوش مصنوعی نیز باشند. مهندسان AI به کمک الگوریتم‌های یادگیری ماشینی و شناختی که از شبکه های عصبی دارند، مدل‌های هوش مصنوعی بهتری می‌سازند.

میانگین درآمد سالانه: ۱۱۶۵۴۰ دلار

  • مهندس یادگیری ماشین: این متخصصان مسئول ساخت و نگهداری نرم‌افزارهای خودرانی هستند که به کاربردهای یادگیری ماشینی کمک می‌کنند. از آن‌جایی که مهندس یادگیری ماشین با حجم زیادی داده سر و کار دارند، باید تسلط کافی بر مباحث مدیریت داده ها داشته باشند.

میانگین درآمد سالانه: ۱۲۱۱۰۶ دلار

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

میانگین درآمد سالانه: ۹۰۴۳۰ دلار

  • متخصص رباتیک: وظیفه‌ی این متخصصان، ارتقای کارآمد مسائلی است که توسط ربات‌ها انجام می‌شود. صنایع عمده تمایل دارند دستگاه‌های خود را برنامه‌نویسی کرده یا دستگاه‌های مکانیکی/ ربات‌هایی بسازند که دستورات مختلف انسان‌ها را اجرا می‌کنند؛ این صنایع، فرصت‌های شغلی فراوانی برای این دسته از متخصصان فراهم می‌آورند.

میانگین درآمد سالانه: ۸۳۲۴۱ دلار

با پیشرفت فناوری، فرصت‌های شغلی حوزه‌های یادگیری ماشینی و هوش مصنوعی نیز توسعه خواهند یافت. برای به دست آوردن این مشاغل، باید بر مهارت‌های خاصی تسلط داشت.

مهارت‌های ضروری برای مشاغل یادگیری ماشینی و هوش مصنوعی

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

مهارت‌های فنی
  • زبان‌های برنامه‌نویسی

برای هم‌گام ماندن با آخرین فناوری‌ها، آشنایی با زبان‌های برنامه‌نویسی ضروری است. زبان‌های برنامه‌نویسی فراوان هستند و رتبه‌بندی آن‌ها از نظر کیفیت کار آسانی نیست. از برجسته‌ترین زبان‌های برنامه‌نویسی که در هوش مصنوعی به کار می‌روند می‌توان به این موارد اشاره کرد:

  • Lisp
  • Java
  • C ++
  • Python
  • R

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

  • جبر خطی/ حسابان/ آمار/ احتمال

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

  • ریاضیات کاربردی، چارچوب‌ها و الگوریتم‌ها

آشنایی با مبانی نظری الگوریتم‌ها و نحوه‌ی کارکرد آن‌ها از اهمیت بالایی برخوردار است. افراد باید با مباحثی از قبیل گرادیان کاهشی، (ضرایب) لاگرانژی، بهینه‌سازی محدب، معادلات دیفرانسیل جزئی، برنامه‌نویسی درجه‌ی دوم، و جمع‌زنی آشنایی داشته باشند. علاوه بر این، برای ساخت مدل‌های هوش مصنوعی با استفاده از داده‌های بدون ساختار، باید بر الگوریتم‌های یادگیری عمیق و نحوه‌ی پیاده‌سازی آن‌ها با استفاده از یک چارچوب مشخص تسلط داشت. چند نمونه از چارچوب‌هایی که در هوش مصنوعی به کار می‌روند عبارت‌اند از: TensorFlow، PyTorch، Theano، و Caffe.

  • کتابخانه‌ها و ابزارهای پردازش زبان طبیعی (NLP)

هدف اصلی پردازش زبان طبیعی یا NLP، ترکیب علوم کامپیوتر، مهندسی اطلاعات، زبان‌شناسی، هوش مصنوعی و برنامه‌نویسی سیستم‌ها به منظور پردازش و تحلیل دیتاست‌های بزرگ است. مهندس یادگیری ماشین و هوش مصنوعی باید بتواند مسائل گسترده‌ و جامع NLP، از قبیل پردازش زبان، صوت و ویدئو، را اجرا کند؛ در این راستا، استفاده از کتابخانه‌ها و ابزارهای متعدد NLP از این دست ضروری است:

  • NTLK
  • Gensim
  • Word2vec
  • TextBlob
  • CoreNLP
  • تجزیه و تحلیل عواطف
  • PyNLPI
  • شبکه‌های عصبی

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

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

مهارت‌های غیرفنی
  • تکرار ایده‌ها (الگوسازی سریع)

برای رسیدن به بهترین ایده‌ی ممکن، تکرار ایده‌ها فرآیندی ضروری است. تکرار ایده‌ها در همه‌ی جنبه‌های یادگیری ماشینی (از انتخاب مدل مناسب گرفته تا کار روی پروژه‌هایی همچون آزمایشات A/B، کتابخانه‌های NLP و غیره) قابل اجراست. متقاضیان، به خصوص زمانی که با مدل‌های سه بُعدی سروکار دارند، باید بتوانند با استفاده از تکنیک‌های گوناگون و به کمک طراحی‌های کامپیوتری سه بُعدی، مدل‌های واقع‌گرایانه‌ای متشکل از اجزاء یا مجموعه‌های مستحکم بسازند.

  • دانش از حوزه‌ی تخصصی

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

  • تفکر خلاق و بحرانی

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

برترین برنامه‌های اعطاکننده گواهینامه در حوزه‌ی هوش مصنوعی

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

  1. «هوش مصنوعی برای همه» از Coursera

Coursera یک پلتفرم آموزشی جهانی است که تعداد زیادی دوره‌ی آموزشی با گواهی‌های معتبر ارائه می‌دهد. این سامانه با بیش از ۲۰۰ دانشگاه و سازمان برتر همکاری دارد تا بتواند آموزش‌های آنلاینی انعطاف‌پذیر، مقرون‌ به صرفه، مرتبط با شغل در دسترس همگان قرار دهد. یکی از این دوره‌های آموزشی «هوش مصنوعی برای همه» نام دارد. این دوره‌ به اصطلاحات و واژه‌شناسی هوش مصنوعی (همچون شبکه‌های عصبی، یادگیری ماشینی، یادگیری عمیقی و علوم داده) می‌پردازد. با شرکت در این دوره‌ی آموزشی، درک بهتری از راهبردهای گوناگون هوش مصنوعی به دست خواهید آورد، درکی که به توسعه‌ی پروژه‌های یادگیری ماشینی و علوم داده کمک می‌کند.

  1. «مهندس هوش مصنوعی (AIE™)» از ARTiBA

هیأت هوش مصنوعی آمریکا (ARTiBA) با ارائه‌ی گواهینامه‌ی مهندسی هوش مصنوعی (AIE™)، به متقاضیان کمک می‌کند مسیر شغلی خود در هوش مصنوعی را ارتقاء دهند. گواهینامه‌ی AIE™ که بر اساس چارچوب شناخته‌شده و بین‌المللی AMDEX™ طراحی شده است، دانش لازم برای فعالیت به عنوان یک متخصص موضوعی (SME) را در اختیار متقاضیان قرار می‌دهد.

در این دوره‌ی آموزشی، متقاضیان مفاهیم گوناگون از قبیل یادگیری ماشینی، یادگیری با نظارت و غیرنظارت شده، پردازش زبان طبیعی، محاسبات شناختی، یادگیری تقویتی و یادگیری عمیق را می‌آموزند. شرکت‌کنندگان در این دوره می‌توانند سرعت آموزش را مطابق با نیاز خود تغییر دهند؛ امکان حضور در آزمون، ۴۵ روز پس از ثبت‌نام وجود دارد.

  1. «دوره‌ی آموزش حرفه‌ای هوش مصنوعی» از مایکروسافت

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

  1. «مهندسی هوش مصنوعی» از simplilearn

Simplilearn با همکاری IBM، یک دوره‌ی آموزشی مهندسی هوش مصنوعی برگزار می‌کند. هدف از این دوره‌ی آموزشی، غنی‌سازی مهارت‌های شرکت‌کنندگان و تربیت متخصص هوش مصنوعی است. شرکت‌کنندگان با استفاده از قابلیت‌های متنوع IBM همچون هکاتون‌ها، کلاس‌های ارشد، جلسات زنده، آزمایشگاه‌های کاربردی، جلسات پرسش آزاد و پروژه‌های گوناگون، می‌توانند بر مفاهیم علوم داده به زبان پایتون، یادگیری ماشینی، یادگیری عمیق و NLP تسلط یابند. علاوه بر این، امکان دسترسی به حساب کاربردی IBM Cloud Lite و دریافت گواهینامه‌ی ارشد هوش مصنوعی Simplilearn (که در بین صنایع شناخته‌شده و پذیرفته‌شده است) برای همه‌ی شرکت‌کنندگان وجود دارد.

جمع‌بندی

اگر به دنبال فعالیت در حوزه‌ی هوش مصنوعی هستید، باید مهارت‌ها و گواهینامه‌های لازم را در دست داشته باشید. با دریافت گواهینامه‌های لازم، شانس خود را برای به دست آوردن شغلی بهتر در سازمانی خوش‌نام، افزایش می‌دهید.

منبع: هوشیو

دفترچه راهنمای کتابخانه Matplotlib در پایتون؛ آموزش کامل مصور‌سازی داده‌ها


کتابخانه Matplotlib  پرکاربردترین ابزار پایتون در حوزه مصور‌سازی داده ها است. این کتابخانه در محیط‌های مختلف از جمله سرورهای کاربردی، ‌ابزارهای رابط کاربری گرافیکی، Jupyter notebook، iPython و iPython shell پشتیبانی می‌شود.

معماری کتابخانه Matplotlib

کتابخانه Matplotlib دارای ۳ لایه است که عبارتند از: لایه backend ، لایه artist  و لایه scripting. لایه سمت سرور سه کلاس رابط دارد: ۱. figure canvas که فضایی که نمودار در آن رسم خواهد شد را تعریف می‌کند، ۲. renderer که مسئول رسم نمودار در figure canvas است و ۳. event که با ورودی‌های کاربر مثل کلیک‌ها سروکار دارد. لایهartist  برای رسم نمودار روی صفحه از renderer استفاده می‌کند. بنابراین، هر چیزی که در نمودار رسم‌شده توسط کتابخانه Matplotlib  مشاهده می‌کنید، در حقیقت، مصداقی از یک لایهartist  است. یعنی هر عنوان، برچسب، علامت و حتی خود نمودار یک لایهartist  مجزا هستند. لایه scripting یک رابط سبک‌تر است که برای استفاده روزانه مناسب می‌باشد. در این مقاله، همه مثال‌ها با استفاده از لایه scripting به شما نشان داده می‌شوند و همچنین از محیط Jupyter notebook استفاده خواهم کرد.

اگر هدفتان از خواندن این مقاله یادگیری کار با کتابخانهMatplotlib  است، پیشنهاد می‌کنم که حتماً خودتان کدها را اجرا کنید تا طرزکار آن را ببینید.

آماده‌سازی داده‌ها

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

import numpy as np

import pandas as pd

df = pd.read_excel('https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DV0101EN/labs/Data_Files/Canada.xlsx',

sheet_name='Canada by Citizenship',

skiprows=range(۲۰),

skipfooter=۲)

df.head()

من ۲۰ سطر اول و ۲ سطر آخر دیتاست را رد می‌کنم، چون این سطرها حاوی متن هستند، نه داده‌هایی که ما نیاز داریم. این دیتاست، بسیار بزرگ است و به همین دلیل، نمی‌توانم از صفحه حاوی داده‌ها عکس بگیرم و برای شما نمایش دهم. در زیر می‌توانید نام ستون‌های دیتاست را ملاحظه فرمایید:

در این مقاله مربوط به کتابخانه Matplotlib قرار نیست همه این ستون‌ها را استفاده کنیم. بنابراین، باید ستون‌های بلااستفاده را حذف کنیم تا دیتاست کوچک‌تر و کار با آن راحت‌تر شود.

df.columns

#Output:

Index([ 'Type', 'Coverage', 'OdName', 'AREA', 'AreaName', 'REG',

'RegName', 'DEV', 'DevName', ۱۹۸۰, ۱۹۸۱, ۱۹۸۲,

۱۹۸۳, ۱۹۸۴, ۱۹۸۵, ۱۹۸۶, ۱۹۸۷, ۱۹۸۸,

۱۹۸۹, ۱۹۹۰, ۱۹۹۱, ۱۹۹۲, ۱۹۹۳, ۱۹۹۴,

۱۹۹۵, ۱۹۹۶, ۱۹۹۷, ۱۹۹۸, ۱۹۹۹, ۲۰۰۰,

۲۰۰۱, ۲۰۰۲, ۲۰۰۳, ۲۰۰۴, ۲۰۰۵, ۲۰۰۶,

۲۰۰۷, ۲۰۰۸, ۲۰۰۹, ۲۰۱۰, ۲۰۱۱, ۲۰۱۲,

۲۰۱۳],

dtype='object')


df.drop(['AREA','REG','DEV','Type','Coverage'], axis=۱, inplace=True)

df.head()

به نام ستون‌ها دقت کنید، ستون OdName حاوی نام کشورها، AreaName نام قاره‌ای که کشور مذکور در آن قرار دارد و RegName نیز نام منطقه‌ای که کشور مربوطه در آن واقع شده، می‌باشند. اما من می‌خواهم نام ستون‌ها را تغییر دهم تا گویاتر و قابل‌فهم باشند.

df.rename(columns={'OdName':'Country', 'AreaName':'Continent', 'RegName':'Region'}, inplace=True)

df.columns

#Output:

Index([ 'Country', 'Continent', 'Region', 'DevName', ۱۹۸۰,

۱۹۸۱, ۱۹۸۲, ۱۹۸۳, ۱۹۸۴, ۱۹۸۵,

۱۹۸۶, ۱۹۸۷, ۱۹۸۸, ۱۹۸۹, ۱۹۹۰,

۱۹۹۱, ۱۹۹۲, ۱۹۹۳, ۱۹۹۴, ۱۹۹۵,

۱۹۹۶, ۱۹۹۷, ۱۹۹۸, ۱۹۹۹, ۲۰۰۰,

۲۰۰۱, ۲۰۰۲, ۲۰۰۳, ۲۰۰۴, ۲۰۰۵,

۲۰۰۶, ۲۰۰۷, ۲۰۰۸, ۲۰۰۹, ۲۰۱۰,

۲۰۱۱, ۲۰۱۲, ۲۰۱۳],

dtype='object')

به این ترتیب، نام ستون‌های دیتاست به Country به معنی کشور، Continent به معنی قاره، Region به معنی منطقه و DevName که بیان‌گر توسعه‌یافته یا درحال‌توسعه بودن کشور است، تغییر پیدا کردند. ستون‌هایی که نام آن‌ها نشان‌دهنده یک سال خاص است، حاوی شمار مهاجرانی که هستند که در آن سال وارد کانادا شده‌اند. حالا می‌خواهم یک ستون جدید به نام total اضافه کنم که به ما بگوید چه تعداد مهاجر بین سال ۱۹۸۰ تا ۲۰۱۳ به کانادا آمده‌اند.

df['Total'] = df.sum(axis=۱)

همان‌طور که مشاهده می‌کنید، یک ستون جدید به نام Total به انتهای دیتاست افزوده شده است.

حالا باید بررسی کنیم و ببینیم آیا سلول خالی یا سلولی حاوی مقدار null در ستون‌ها وجود دارد؟

df.isnull().sum()

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

این دیتاست از همان ابتدا تمیز و مرتب بود، بنابراین، عملیات پاک‌سازی داده‌ها را در همین‌جا به پایان می‌رسانیم. البته اگر عملیات دیگری نیاز باشد، در طی مسیر آن را انجام خواهیم داد.

df = df.set_index('Country')

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

این دیتاست از همان ابتدا تمیز و مرتب بود، بنابراین، عملیات پاک‌سازی داده‌ها را در همین‌جا به پایان می‌رسانیم. البته اگر عملیات دیگری نیاز باشد، در طی مسیر آن را انجام خواهیم داد.

df = df.set_index('Country')

تمرین‌های رسم نمودار در کتابخانه Matplotlib

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

%matplotlib inline

import matplotlib.pyplot as plt

import matplotlib as mpl

اگر از همان ابتدا سبک نمودار خود را انتخاب کنید، دیگر لازم نخواهد بود روی جنبه‌های هنری آن زمان زیادی بگذارید. در زیر لیست گزینه‌های موجود را مشاهده می‌فرمایید:

plt.style.available

#Output:

mpl.style.use(['ggplot'])

'classic',

'dark_background',

'fast',

'fivethirtyeight',

'ggplot',

'grayscale',

'seaborn-bright',

'seaborn-colorblind',

'seaborn-dark-palette',

'seaborn-dark',

'seaborn-darkgrid',

'seaborn-deep',

'seaborn-muted',

'seaborn-notebook',

'seaborn-paper',

'seaborn-pastel',

'seaborn-poster',

'seaborn-talk',

'seaborn-ticks',

'seaborn-white',

'seaborn-whitegrid',

'seaborn',

'Solarize_Light2',

'tableau-colorblind10',

'_classic_test']

من در این‌جا گزینه ggplot را برای نمودارم انتخاب می‌کنم. شما می‌توانید گزینه‌های دیگر را نیز امتحان کرده و سبک موردعلاقه خود را برگزینید.

نمودار خطی

به نظر من به تصویر کشیدن تمایل کشورهای مختلف به مهاجرت به کانادا جالب خواهد بود. به این منظور، ابتدا یک لیست از سال‌هایی که در دیتاست داریم (یعنی۱۹۸۰ تا ۲۰۱۴) ایجاد می‌کنم.

years = list(map(int, range(۱۹۸۰, ۲۰۱۴)))

برای این نمودار کشور سوئیس را انتخاب کردم و می‌خواهم داده‌های مربوط به آن را روی نمودار نمایش دهم. پس باید داده‌های مهاجرت مردم سوئیس به کانادا را در هر سال تهیه کنم.

df.loc['Switzerland', years]

در تصویر بالا بخشی از داده‌های مربوطه را مشاهده می‌کنید. حال زمان رسم نمودار است. کار بسیار آسانی است. تنها کافی است تابع plot را فراخوانی کنید، داده‌هایی که اماده کرده‌اید را به آن بدهید و در آخر نیز عنوان و برچسب‌های محور x و y را تعیین کنید.

df.loc['Switzerland', years].plot()

plt.title('Immigration from Switzerland')

plt.ylabel('Number of immigrants')

plt.xlabel('Years')

plt.show()

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

ind_pak_ban = df.loc[['India', 'Pakistan', 'Bangladesh'], years]

ind_pak_ban.head()

فرمت داده‌ها در این‌جا با مثال قبلی متفاوت است. اگر تابع plot را روی همین دیتافریم اعمال کنیم، روی محور xها تعداد مهاجران هر کشور و روی محور yها، سال را خواهیم داشت. پس باید فرمت دیتاست را تغییر دهیم:

ind_pak_ban.T

در این تصویر تنها بخشی از دیتاست را مشاهده می‌کنید، اما می‌توانید ببینید که فرمت آن چگونه تغییر کرده است. حال با فراخوانی تابع plot، سال روی محور xها و شمار مهاجران هر کشور روی محور yها رسم خواهد شد.

در این مثال لازم نبود نام نمودار را ذکر کنیم، زیرا پیش‌فرض این تابع، نمودار خطی است.

ind_pak_ban.T.plot()

نمودار دایره‌ای

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

cont = df.groupby('Continent', axis=۰).sum()

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

cont['Total'].plot(kind='pie', figsize=(۷,۷),

autopct='%۱.۱f%%',

shadow=True)

#plt.title('Immigration By Continenets')

plt.axis('equal')

plt.show()

اگر به این کد دقت کنید، می‌بینید که تابع ما دارای پارامتری به نام «kind» است. غیر از نمودار خطی، باید نوع سایر نمودارها را با این پارامتر تعیین کنید. همچنین پارامتر جدیدی به نام «figsize» در تابع تعریف کرده‌ام که ابعاد نمودار را تعیین می‌کند.

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

colors = ['lightgreen', 'lightblue', 'pink', 'purple', 'grey', 'gold']

explode=[۰.۱, ۰, ۰, ۰, ۰.۱, ۰.۱]

cont['Total'].plot(kind='pie', figsize=(۱۷, ۱۰),

autopct = '%۱.۱f%%', startangle=۹۰,

shadow=True, labels=None, pctdistance=۱.۱۲, colors=colors, explode = explode)

plt.axis('equal')

plt.legend(labels=cont.index, loc='upper right', fontsize=۱۴)

plt.show()

نمودار جعبه‌ای

در این مثال ابتدا نمودار جعبه‌ای برای شمار مهاجران چینی رسم می‌کنیم.

china = df.loc[['China'], years].T

این از داده‌های موردنیاز‌مان؛ حالا برویم سراغ رسم نمودار جعبه‌ای:

china.plot(kind='box', figsize=(۸, ۶))

plt.title('Box plot of Chinese Immigratns')

plt.ylabel('Number of Immigrnts')

plt.show()

اگر به دنبال نکات و تکنیک‌های بیشتری در خصوص نمودارهای جعبه‌ای می‌گردید، می‌توانید به این لینک مراجعه فرمایید.

امکان رسم چندین نمودار جعبه‌ای در یک نمودار هم وجود دارد. در این‌جا با استفاده از دیتافریم قبلی یعنی «ind_pak_ban»، نمودار جعبه‌ای هر سه کشور هند، پاکستان و بنگلادش را روی یک نمودار رسم می‌کنم.

ind_pak_ban.T.plot(kind='box', figsize=(۸, ۷))

plt.title('Box plots of India, Pakistan and Bangladesh Immigrants')

plt.ylabel('Number of Immigrants')

نمودار پراکنش

رسم یک نمودار پراکنش بهترین راه برای شناسایی رابطه میان متغیرهاست. نمودار پراکنش را رسم کنید تا روند مهاجرت به کانادا طی سال‌های ۱۹۸۰ تا ۲۰۱۳ را مشاهده کنید.

برای رسم این نمودار یک دیتافریم جدید ایجاد می‌کنم که حاوی تعداد کل مهاجرانی است که در هر سال به کانادا مهاجرت کرده‌اند و متغیر years در آن به عنوان شاخص درنظر گرفته شده است.

totalPerYear = pd.DataFrame(df[years].sum(axis=۰))

totalPerYear.head()

ما باید نوع متغیر years را به عدد صحیح یا int تبدیل کنیم. در ادامه قصد دارم اندکی دیتاست را دستکاری کنم تا درک آن آسان‌تر شود.

totalPerYear.index = map(int, totalPerYear.index)

totalPerYear.reset_index(inplace=True)

totalPerYear.head()

در نمودار پراکنش باید محور xها و yها را مشخص کنیم.

totalPerYear.plot(kind='scatter', x = 'year', y='total', figsize=(۱۰, ۶), color='darkred')

plt.title('Total Immigration from 1980 - 2013')

plt.xlabel('Year')

plt.ylabel('Number of Immigrants')

plt.show()

به نظر می‌رسد بین دو متغیر سال و تعداد مهاجران یک رابطه خطی وجود دارد و روند مهاجرت از سال ۱۹۸۰ تا ۲۰۱۳ روندی صعودی داشته است.

نمودار ناحیه‌ای

نمودار ناحیه‌ای در حقیقت سطح زیر منحنی خطی را نمایش می‌دهد. برای رسم این نمودار می‌خوام از دیتافریمی استفاده کنم که حاوی داده‌های مربوط به ۴ کشور هند، چین، پاکستان و فرانسه است.

top = df.loc[['India', 'China', 'Pakistan', 'France'], years]

top = top.T

دیتاست ما آماده است، حالا نوبت رسم نمودار است.

colors = ['black', 'green', 'blue', 'red']

top.plot(kind='area', stacked=False,

figsize=(۲۰, ۱۰), colors=colors)

plt.title('Immigration trend from Europe')

plt.ylabel('Number of Immigrants')

plt.xlabel('Years')

plt.show()

در کتابخانه Matplotlib اگر می‌خواهید نمودار هر کشور به صورت جداگانه رسم شود، یادتان باشد که مقدار پارامتر «stacked» را حتماً برابر False قرار دهید، در غیر این صورت نمودار شما به شکل زیر خواهد شد:

وقتی مقداری برای stacked تعیین نشود، ناحیه متغیرها به صورت مجزا نمایش داده نمی‌شود، بلکه روی متغیر قبلی رسم می‌شود.

هیستوگرام

نمودار هیستوگرام توزیع یک متغیر را نشان می‌دهد. به مثال زیر توجه کنید:

df[۲۰۰۵].plot(kind='hist', figsize=(۸,۵))

plt.title('Histogram of Immigration from 195 Countries in 2010')

# add a title to the histogram

plt.ylabel('Number of Countries')

# add y-label

plt.xlabel('Number of Immigrants')

# add x-label

plt.show()

روی این نمودار هیستوگرام ۲۰۰۵ داده را به تصویر کشیده‌ام. از این نمودار پیداست که کانادا از اکثر کشورها بین ۰ تا ۵۰۰۰ مهاجر داشته است. و تنها تعداد محدودی کشور بوده‌اند که ۲۰۰۰۰ یا ۴۰۰۰۰ هزار مهاجر به کانادا داشته‌اند.

حالا بیایید با استفاده از دیتافریم top که برای نمودار پراکنش تعریف کرده بودیم، توزیع مهاجران هر کشور را نیز رسم کنیم.

top.plot.hist()

plt.title('Histogram of Immigration from Some Populous Countries')

plt.ylabel('Number of Years')

plt.xlabel('Number of Immigrants')

plt.show()

در نمودار هیستوگرام قبلی دیدیم که کشورهای کمی بودند که ۲۰۰۰۰ یا ۴۰۰۰۰ هزار مهاجر به کانادا داشتند. به‌نظر می‌رسد که چین و هند در میان این کشورها قرار دارند. در این نمودار، حاشیه میان «ستون‌ها» واضح نیست. پس بیایید نمودار بهتری رسم کنیم.

تعیین تعداد ستون‌ها و مشخص کردن حاشیه ستون‌ها در کتابخانه Matplotlib

در این نمودار ۱۵ ستون رسم خواهم کرد. همچنین، یک پارامتر جدید به نام alpha به مدل اضافه می‌کنم که شفافیت رنگ‌ها را تعیین می‌کند. در نمودارهایی مثل این نمودار که ستون‌ها روی هم قرار می‌گیرند، با تغییر میزان شفافیت می‌توان شکل همه توزیع‌ها را مشاهده کرد.

count, bin_edges = np.histogram(top, ۱۵)

top.plot(kind = 'hist', figsize=(۱۴, ۶), bins=۱۵, alpha=۰.۶,

xticks=bin_edges, color=colors)

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

همان‌طور که در نمودار ناحیه‌ای دیدید، با تعریف مقدار True پارامتر stacked  می‌توان از روی هم قرار گرفتن نمودارها جلوگیری کرد.

top.plot(kind='hist',

figsize=(۱۲, ۶),

bins=۱۵,

xticks=bin_edges,

color=colors,

stacked=True,

)

plt.title('Histogram of Immigration from Some Populous Countries')

plt.ylabel('Number of Years')

plt.xlabel('Number of Immigrants')

plt.show()

نمودار میله‌ای

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

france = df.loc['France', years]

france.plot(kind='bar', figsize = (۱۰, ۶))

plt.xlabel('Year')

plt.ylabel('Number of immigrants')

plt.title('Immigrants From France')

plt.show()

می‌توانید اطلاعات بیشتری نیز به نمودار اضافه کنید. در این نمودار از سال ۱۹۹۷ به بعد و برای یک دهه کامل، شاهد روند صعودی هستیم که ذکر کردن آن خالی از لطف نخواهد بود. این کار را می‌توان به کمک تابع annotate انجام داد.

france.plot(kind='bar', figsize = (۱۰, ۶))

plt.xlabel('Year')

plt.ylabel('Number of immigrants')

plt.title('Immigrants From France')

plt.annotate('Increasing Trend',

xy = (۱۹, ۴۵۰۰),

rotation= ۲۳,

va = 'bottom',

ha = 'left')

plt.annotate('',

xy=(۲۹, ۵۵۰۰),

xytext=(۱۷, ۳۸۰۰),

xycoords='data',

arrowprops=dict(arrowstyle='->', connectionstyle='arc3', color='black', lw=۱.۵))

plt.show()

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

france.plot(kind='barh', figsize=(۱۲, ۱۶), color='steelblue')

plt.xlabel('Year') # add to x-label to the plot

plt.ylabel('Number of immigrants') # add y-label to the plot

plt.title('Immigrants From France') # add title to the plot

for index, value in enumerate(france):

label = format(int(value), ',')

plt.annotate(label, xy=(value-۳۰۰, index-۰.۱), color='white')

plt.show()

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


جدیدترین اخبار هوش مصنوعی ایران و جهان را با هوشیو دنبال کنید

منبع: هوشیو

انواع دیتاست‌ ها در حوزه‌ های علوم داده، داده‌کاوی و یادگیری ماشینی


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

 

منظور از ابعاد دیتاست چیست؟

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

منظور از پراکندگی در یک دیتاست چیست؟

در برخی از دیتاست‌ها، به‌ویژه دیتاست‌هایی که ویژگی‌های نامتقارن دارند، مقدار اغلب صفات یک شیء صفر است و در اکثر موارد، تنها کمتر از ۱% از آن‌ها مقداری غیر صفر دارند. این‌گونه داده‌ها، داده‌های پراکنده نامیده می‌شوند. همچنین می‌توان گفت که این دیتاست دارای پراکندگی است.

منظور از وضوح دیتاست چیست؟

شناسایی الگوهای موجود در داده‌ها به میزان وضوح آن‌ها بستگی دارد. اگر وضوح داده‌ها بیش از حد زیاد باشد، ممکن است الگوها قابل مشاهده نباشند و یا در میان نویزها گم شوند. از طرف دیگر، اگر وضوح داده خیلی کم باشد، ممکن است الگو کاملاً از بین برود. برای مثال، تغییرات فشار اتمسفر در مقیاس ساعتی، حرکت طوفان‌ها و سایر وقایع آب‌وهوایی را نشان می‌دهد. اما این قبیل پدیده‌ها در مقیاس ماهیانه قابل تشخیص نیستند.
حال به موضوع نفرین ابعاد بازمی‌گردیم. نفرین ابعاد بیان‌گر این است که با افزایش تعداد ابعاد(تعداد صفات برای انواع دیتاست ) داده‌ها، اجرای بسیاری از روش‌های تجزیه و تحلیل بر روی آن‌ها سخت خواهد شد. به‌خصوص این‌که با افزایش تعداد ابعاد، پراکندگی داده‌ها نیز در آن محیط بیشتر و بیشتر می‌شود. مواجهه با این مسئله در زمان رده‌بندی باعث می‌شود که داده‌ کافی برای طراحی مدلی که همه اشیاء ممکن را به‌درستی و با اطمینان کافی در یک کلاس خاص قرار دهد، در دسترس نباشد و در زمان خوشه‌بندی نیز معناداری مفاهیم چگالی و فاصله میان نقاط، که برای خوشه‌بندی حیاتی هستند، را کاهش می‌دهد.

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

انواع دیتاست

 

داده‌های ثبتی

در زمان داده‌کاوی اغلب فرض می‌شود که داده‌ها مجموعه‌ای از رکوردها هستند (شیء داده).
در ساده‌ترین گونه داده‌های ثبتی هیچ رابطه روشنی میان رکوردها یا فیلد داده‌ها وجود ندارد و همه رکوردها (شیءها) مجموعه صفات یکسانی دارند. داده‌های ثبتی معمولاً در فایل‌های مسطح یا پایگاه‌های داده‌های رابطه‌ای ذخیره می‌شوند.
داده‌های ثبتی انواع مختلفی دارند که هر یک از آن‌ها ویژگی‌های ذاتی مخصوص به خود را دارد.
داده‌های تراکنشی یا سبد بازار: در این نوع از داده‌های رکوردی، هر رکورد حاوی مجموعه‌ای از آیتم‌هاست. برای مثال، خرید از یک سوپرمارکت یا خواربار فروشی را درنظر بگیرید. در این حالت رکورد مربوط به هر یک از مشتریان حاوی مجموعه‌ای از اقلام خریداری‌شده در یک مراجعه مشخص است. این نوع از داده‌ها، داده‌های سبد بازار نام گرفته‌اند. داده تراکنشی نیز دسته‌های حاوی مجموعه‌ اقلام هستند، اما این دسته‌ها را می‌توان مجموعه‌ای از رکوردها درنظر گرفت که فیلدهای آن دارای صفات نامتقارن هستند. این صفات اغلب دودویی هستند و به ما می‌گویند که آیا یک قلم جنس مشخص خریداری شده است یا خیر.
ماتریس داده‌ها: اگر همه شیء داده‌های موجود در یک دسته از داده‌ها دارای یک مجموعه صفات عددی ثابت و یکسان باشند، در یک فضای چندبعدی می‌توان این شیء داده‌ها را به عنوان نقاط (بردار) در نظر گرفت. هر بعد در این فضای چندبعدی، نمایان‌گر یک صفت متمایز برای توصیف شیء است. مجموعه این نوع از شیء داده‌ها را می‌توان یک ماتریس n×m درنظر گرفت که هر ستون مربوط به یک صفت و هر سطر مربوط به یک شیء است. با استفاده از اعمال ماتریسی استاندارد می‌توان باعث تغییرشکل داده‌ها شد و آن‌ها را دستکاری کرد. به همین دلیل، داده‌های ماتریسی اغلب شکل استاندارد داده‌های آماری درنظر گرفته می‌شوند.
ماتریس داده‌های پراکنده: ماتریس داده‌های پراکنده (که گاه ماتریس داده‌های اسنادی نیز نامیده می‌شود) نوعی از خاصی از ماتریس داده‌هاست که عناصر آن از یک نوع و نامتقارن هستند و در این میان، تنها عناصر غیر صفر اهمیت دارند.

داده‌های نموداریانواع دیتاست

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

داده‌های ترتیبیانواع دیتاست

در برخی از انواع داده‌ها، رابطه صفات داده‌ها با یک‌دیگر دارای ترتیب زمانی یا فضایی است. همان‌طور که در تصویر بالا مشاهده می‌کنید، این قبیل داده‌ها را می‌توان در ۴ دسته مجزا بررسی کرد:
داده‌های متوالی: این داده‌ها که گاه با نام داده‌های موقتی نیز از آن‌ها یاد می‌شود را می‌توان داده‌های ثبتی تعمیم‌یافته دانست که هر رکورد آن یک زمان مشخص دارد. برای مثال، دیتاست مربوط به تراکنش‌های یک خرده‌فروشی را درنظر بگیرید که علاوه‌بر خود تراکنش‌ها زمان انجام تراکنش نیز در آن ذخیره شده است.
داده‌های رشته‌ای: داده‌های رشته‌ای به دیتاستی گفته می‌شود که حاوی رشته‌ای از داده‌های مجزا (برای مثال، رشته‌ای از کلمات یا حروف) است. این داده‌ها شباهت زیادی به داده‌های متوالی دارند، اما تفاوت آن‌ها در این است که داده‌های رشته‌ای به‌جای زمان، یک جایگاه مشخص در رشته ترتیبی مربوطه دارند. برای مثال، اطلاعات ژنتیکی گیاهان و جانوران را می‌توان در قالب داده‌های رشته‌ای و به‌صورت رشته‌ای از نوکلئوتیدها (که هر یک به عنوان یک ژن درنظر گرفته می‌شوند) ذخیره کرد.
داده‌های سری زمانی: داده‌های سری زمانی نوع خاصی از داده‌های متوالی هستند که در آن‌ها هر رکورد یک سری زمانی است؛ برای مثال، در هر رکورد می‌توان نتایج ارزیابی یک مسئله درطول زمان را ذخیره کرد. برای ارائه یک مثال دیگر از داده‌های سری زمانی می‌توان یکی از انواع دیتاست های مالی را درنظر گرفت که هر یک از اشیاء آن یک سری زمانی از قیمت روزانه چندین سهم متفاوت باشد.
داده‌های فضایی: در این نوع داده‌ها، برخی از اشیاء علاوه‌بر سایر صفات‌شان، صفات فضایی همچون مکان یا ناحیه نیز دارند. برای مثال، داده‎های آب‌وهوایی (بارش، دما یا فشار) را درنظر بگیرید که از موقعیت‌های جغرافیایی مختلف جمع‌آوری شده‌اند.

خب تا اینجا انواع دیتاست ها در حوزه علوم داده، داده‌کاوی و یادگیری ماشینی برای شما توضیح داده شد. اگر مقاله‌ای با موضوعی خاص مد نظر دارید برای ما در بخش نظرات وارد کنید تا در اسرع وقت برای شما در هوشیو منتشر شود.

منبع: hooshio.com

بهترین دیتاست ‌های یادگیری ماشینی برای مبتدیان


اگر به شیوه‌های آموزش الگوریتم‌های یادگیری ماشینی در ۵ یا ۱۰ سال گذشته بنگرید و آن را با شیوه‌های جدید مقایسه کنید، متوجه تفاوت‌های بزرگی می‌شوید. امروزه آموزش الگوریتم‌ها در یادگیری ماشینی بهتر و کارآمدتر از گذشته است و دلیل آن نیز حجم زیاد داده‌هایی است که امروزه در دسترس ما قرار گرفته‌اند. اما یادگیری ماشینی چگونه از این داده‌های استفاده می‌کند؟
به تعریف اصطلاح «یادگیری ماشینی» دقت کنید: «در یادگیری ماشینی، رایانه‌ها یا ماشین‌ها بدون برنامه‌نویسی مستقیم و به‌طور خودکار از تجربیات گذشته می‌آموزند». منظور از آموزش ماشین‌ها درواقع همان عبارت «از تجربیات می‌آموزند» است. طی این فرآیند، داده‌ها و اطلاعات نقش مهمی ایفا می‌کنند. اما ماشین‌ها چگونه آموزش داده می‌شوند؟ پاسخ دیتاست‌ها هستند. به همین دلیل است که دادن اطلاعات و داده‌های درست به ماشینی که قرار است مسئله مدنظر شما را حل کند، مسئله‌ای حیاتی است. در این مقاله دیتاست های یادگیری ماشینی را معرفی می‌کنیم.

اهمیت دیتاست‌ها در یادگیری ماشینی چیست؟

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

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

دیتاست‌ها داده‌های موردنیاز شما را در اختیارتان قرار می‌دهند. دیتاست‌ها مدلی آموزش می‌دهند که قادر است واکنش‌های مختلفی نشان دهد. آن‌ها مدلی از الگوریتم‌ها می‌سازند که می‌تواند روابط را آشکار کند، الگوها را تشخیص دهد، مسائل دشوار را درک کند و تصمیم بگیرد.

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

برای مثال، اگر برای آموزش یک سیستم بازشناسی گفتار از دیتاستی حاوی داده‌های مربوط به کتب درسی انگلیسی زبان استفاده کنیم، این ماشین در درک مطالب غیر درسی دچار مشکل خواهد شد. زیرا در این دیتاست، داده‌های مربوط به دستورزبان محاوره‌ای، لهجه‌های خارجی و اختلالات گفتاری وجود ندارد و ماشین نیز نمی‌تواند چیزی در این خصوص بیاموزد. بنابراین، برای آموزش این سیستم باید از دیتاستی استفاده کرد که متغیرهای گسترده‌ای که در زبان محاوره و در بین جنسیت‌های مختلف، سنین متفاوت و لهجه‌های مختلف وجود دارد را شامل شود.

بنابراین، باید بخاطر داشته باشید که داده‌های آموزشی شما باید هر سه ویژگی کیفیت، کمیت و تنوع را داشته باشند، زیرا تمامی این عوامل در موفقیت مدل‌های یادگیری ماشینی مؤثر هستند.

برترین دیتاست ‌های یادگیری ماشینی برای مبتدیان

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

پردازش تصویر

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

نام دیتاستتوضیح مختصر
۱۰k US Adult Faces Databaseاین دیتاست شامل ۱۰.۱۶۸ عکس از چهره طبیعی افراد و ۲.۲۲۲ معیار از چهره است. برخی از معیارهایی که در این دیتاست برای چهره‌ درنظر گرفته شده‌اند عبارتند از: به‌یادماندنی بودن، بینایی یارانه‌ای و صفات روانشناختی. تصاویر این دیتاست در فرمت JPEG هستند، وضوح تصاویر ۷۲ پیکسل در هر اینچ و ارتفاع آن‌ها‌ها ۲۵۶ پیکسل است.
Google’s Open ImagesOpen Image دیتاستی است متشکل از ۹ میلیون نشانی اینترنتی که شما را به تصاویر موجود در اینترنت هدایت می‌کند. این تصاویر دارای برچسب‌های توضیحی هستند که در ۶۰۰۰ دسته مختلف طبقه‌بندی شده‌اند. این برچسب‌ها بیشتر عناصر واقعی را شامل می‌شوند. تنها تصاویری در این دیتاست قرار می‌گیرند که مجوز انتساب مشترکات خلاقانه را دریافت کرده باشند.
Visual Genomeاین دیتاست حاوی بیش از ۱۰۰ هزار تصویر است که کاملاً تفسیر شده‌اند. نواحی هر یک از این تصاویر به‌ این صورت توصیف شده‌اند؛ توضیح ناحیه: دختری که به فیل غذا می‌دهد، شیء: فیل، صفت: بزرگ، رابطه: غذا دادن.
Labeled Faces in the Wildدر این دیتاست بیش از ۱۳.۰۰۰ تصویر از چهره افراد جمع‌آوری شده است. این تصاویر، تصاویری هستند که در فضای اینترنت به ‌اشتراک گذاشته‌ شده بودند و در برچسب هر تصویر، نام فرد درون تصویر ذکر شده است.

 

ایده‌هایی‌ آسان و سرگرم‌کننده برای استفاده از دیتاست‌های تصویری

• گربه یا سگ: با استفاده از دیتاست گربه‌ها و دیتاست استنفورد که حاوی تصاویر سگ‌ها است، برنامه شما می‌تواند تشخیص دهد که در تصویر داده‌شده، سگ وجود دارد یا گربه؟
• طبقه‌بندی گل‌های زنبق: می‌توانید به کمک دیتاست گل‌های زنبق یک برنامه کاربردی مبتنی بر یادگیری ماشینی طراحی کنید که گل‌ها را در ۳ گونه گیاهی طبقه‌بندی کند. با اجرای این پروژه دسته‌بندی صفات فیزیکی برپایه محتوا را خواهید آموخت که به شما در طراحی برنامه‌ها و پروژه‌های کاربردی همچون ردیابی کلاه‌برداری،شناسایی مجرمین، مدیریت درد (برای مثال، برنامه ePAT را درنظر بگیرید که با استفاده از فن‌آوری تشخیص چهره، نشانه‌های درد را در صورت فرد شناسایی می‌کند.) و غیره کمک می‌کند.
• هات‌داگ است یا نه؟: برنامه شما با استفاده از دیتاست Food 101، قادر خواهد بود تا غذاها را شناسایی کند و به شما بگوید که آیا این غذا ساندویچ هات‌داگ است یا خیر.

تحلیل احساس

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

 

 

 

نام دیتاستتوضیح مختصر
Sentiment140این دیتاست حاوی ۱۶۰.۰۰۰ توییت است که شکلک‌های استفاده‌شده در آن‌ها حذف شده‌اند.
Yelp Reviewsاین دیتاست یک دیتاست رایگان است که توسط شرکت Yelp منتشر شده و حاوی بیش از ۵ میلیون نظر درباره رستوران‌ها، فروشگاه‌ها، تفریح‌های شبانه، غذاها، سرگرمی‌ها و غیره است.
Twitter US Airline Sentimentدر این دیتاست داده‌های مربوط به خطوط هواپیمایی آمریکا در شبکه اجتماعی توییترT از سال ۲۰۱۵ جمع‌آوری شده و به هر یک از آن‌ها یکی از برچسب‌های مثبت، منفی و خنثی داده شده است.
Amazon reviewsدر این دیتاست بیش از ۳۵ میلیون نظر ثبت‌شده در وب‌سایت آمازون طی دوره زمانی ۱۸ ساله جمع‌آوری شده است. داده‌های موجود شامل اطلاعاتی درخصوص محصولات، امتیاز کاربران و نظرات متنی هستند.

 

ایده‌هایی‌ آسان و سرگرم‌کننده برای استفاده از دیتاست‌های تحلیل احساسی

مثبت یا منفی: با استفاده از دیتاست Spambase در مدل خود، توییت‌ها را تحلیل کنید و آن‌ها در دو دسته مثبت و منفی طبقه‌بندی کنید.
راضی یا ناراضی: با استفاده از دیتاست Yelp Reviews پروژه‌ای تعریف کنید که در آن یک ماشین بتواند با مشاهده نظر یک فرد درخصوص یک محصول تشخیص دهد که فرد از آن محصول راضی بوده یا ناراضی.
خوب یا بد: می‌توانید با استفاده از دیتاست Amazon reviews، یک ماشین را به نحوی آموزش دهید که خوب یا بد بودن نظرات کاربران را تشخیص دهد.

پردازش زبان طبیعی

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

 

نام دیتاستتوضیح مختصر
Speech Accent Archiveاین دیتاست حاوی ۲۱۴۰ نمونه صوتی است که در آن‌ها افرادی از ۱۷۷ کشور و ۲۱۴ ریشه زبانی مختلف حضور دارند و متن واحدی را به زبان انگلیسی می‌خوانند.
Wikipedia Links dataاین دیتاست حاوی تقریبا ۱.۹ میلیارد واژه است که از بیش از ۴ میلیون مقاله جمع‌آوری شده‌اند. در این دیتاست می‌توان واژه‌ها، عبارات یا بخشی از یک پاراگراف را جست‌وجو کرد.
Blogger Corpusاین دیتاست متشکل  از ۶۸۱.۲۸۸ پست از وبلاگ‌های مختلف است که از وب‌سایت Blogger.com جمع‌آوری شده‌اند. در هر یک از این وبلاگ‌های منتخب، حداقل ۲۰۰ واژه پرکاربر انگلیسی استفاده شده است.

 

ایده‌هایی‌ جالب برای استفاده از دیتاست‌های پردازش زبان طبیعی:

• هرزنامه یا مفید: با استفاده از دیتاست Spambase می‌توانید برنامه‌ای طراحی کنید که قادر باشد ایمیل‌های هرزنامه را از ایمیل‌های مفید و خوب تشخیص دهد.

پردازش ویدیو

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

نام دیتاستتوضیح مختصر
UCF101 – Action Recognition Data Setاین دیتاست شامل ۱۳.۳۲۰ ویدیو است که براساس عملی که در آن‌ها اتفاق می‌افتد در ۱۰۱ گروه دسته‌بندی شده‌اند.
Youtube 8MYoutube 8M دیتاستی متشکل از تعداد زیادی ویدیوهای برچسب گذاری شده است. این دیتاست شامل شناسه‌های میلیون‌ها ویدیو از یوتیوب و تفسیرهای ماشینی بسیار باکیفیت از این ویدیوهاست. در این تفسیرهای ماشینی از بیش از ۳.۸۰۰ واژه مربوط به اشیاء دیداری استفاده شده است.

 

یک ایده جالب یرای استفاده از دیتاست‌های پردازش ویدیو

  • تشخیص عمل: با استفاده از دیتاست‌های  UCF101 – Action Recognition Data Set یا Youtube 8M  می‌توانیدبه برنامه کاربردی خود آموزش دهید تا اعمال مختلف چون راه‌رفتن یا دویدن را در یک ویدیو شناسایی کند.

تشخیص گفتار

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

 

 

 

نام دیتاستتوضیح مختصر
Gender Recognition by Voice and speech analysisاین دیتاست براساس ویژگی‌های آوایی صدا و گفتار، صدای زنان را از مردان تمیز می‌دهد. این دیتاست حاوی ۳.۱۶۸ فایل صوتی ضبط‌شده از صدای زنان و مردان مختلف در هنگام سخن گفتن است.
Human Activity Recognition w/Smartphoneدیتاست Human Activity Recognition حاوی ویدیوهایی است که از ۳۰ فرد در حین انجام فعالیت‌های روزانه‌شان گرفته شده است. در حین انجام این فعالیت‌ها یک گوشی موبایل (سامسونگ گلکسی S2) نیز به کمر آن‌ها متصل شده بود.
TIMITاز دیتاست TIMIT در مطالعات آواشناسی آکوستیک و توسعه سیستم‌های خودکار تشخیص گفتار استفاده می‌شود. این دیتاست متشکل از فایل‌های صوتی ضبط‌شده از ۶۳۰ نفر است که با ۸ گویش رایج انگلیسی آمریکایی صحبت می‌کردند. هر یک از افراد حاضر در این فرآیند باید  کلمات، مصوت‌ها و جملاتی را می‌خواندند که از لحاظ آوایی بسیار غنی بودند.
Speech Accent Archiveاین دیتاست حاوی ۲۱۴۰ نمونه صوتی است که در آن‌ها افرادی از ۱۷۷ کشور و ۲۱۴ ریشه زبانی مختلف حضور دارند و متن واحدی را به زبان انگلیسی می‌خوانند.

 

ایده‌هایی جالب برای استفاده از دیتاست‌های تشخیص گفتار

• تشخیص لهجه: با استفاده از دیتاست Speech Accent Archive، برنامه کاربردی شما قادر خواهد بود لهجه‌های مختلف را از میان لهجه‌های نمونه تشخیص دهد.
• شناسایی عمل: با استفاده از دیتاست Human Activity Recognition w/Smartphone می‌توانید برنامه‌ای طراحی کنید که فعالیت‌های انسان‌ را تشخیص دهد.

تولید زبان طبیعی

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

 

نام دیتاستتوضیح مختصر
Common Voice by Mozillaدیتاست Common Voice حاوی داده‌های گفتاری است که در وب‌سایت Common Voice توسط کاربران خوانده شده‌اند. متون خوانده شده در این وب‌سایت، از منابع عمومی همچون پست‌های کاربران در وبلاگ‌ها، کتاب‌های قدیمی و فیلم‌ها است.
LibriSpeechاین دیتاست شامل حدود ۵۰۰ ساعت فایل صوتی است. این فایل‌ها حاوی کتاب‌های صوتی هستند که توسط افراد مختلف و به زبانی روان خوانده شده‌اند. در این دیتاست فایل صوتی و متن اصلی هر کتاب به تفکیک فصول آن، موجود است.

 

ایده‌هایی جالب برای استفاده از دیتاست‌های تولید زبان طبیعی

• تبدیل متن به گفتار: با استفاده از دیتاست Blogger Corpus،  می‌توانید برنامه‌ای طراحی کنید که متون موجود در وب‌سایت را با صدای بلند بخواند.

اتومبیل‌های خودران

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

 

نام دیتاستتوضیح مختصر
Berkeley DeepDrive BDD100kاین دیتاست یکی از بزرگ‌ترین دیتاست‌های موجود در حوزه اتومبیل‌های خودران مبتنی بر هوش مصنوعی است. این دیتاست حاوی بیش از ۱۰۰.۰۰۰ ویدیو از بیش از ۱۰۰۰ ساعت رانندگی در شرایط آب‌وهوایی ساعات مختلف روز می‌باشد.
Baidu ApolloscapesBaidu Apolloscapes دیتاستی بزرگ متشکل از ۲۶ قلم شیء معنایی از جمله خودرو، دوچرخه، عابرین پیاده، ساختمان، چراغ برق و غیره است.
Comma.aiاین دیتاست حاوی بیش از ۷ ساعت ویدیو از رانندگی در بزرگراه است. این داده‌ها شامل اطلاعاتی درخصوص سرعت، شتاب، زاویه فرمان و مختصات مکانی خودرو می‌شوند.
Cityscape Datasetاین دیتاست متشکل از حجم زیادی از داده‌های ویدیوی تهیه‌شده از خیابان‌های ۵۰ شهر مختلف است.
nuScenesاین دیتاست حاوی بیش از ۱۰۰۰ تصویر از مناظر، حدود ۱.۴ میلیون تصویر، ۴۰۰.۰۰۰ داده درخصوص وسعت دید سیستم لیدار (سیستمی که با استفاده از لیزر، فاصله بین اجسام را می‌سنجد) و ۱.۳ میلیون کادر محاطی ۳ بعدی (که با کمک دوربین‌های RGB، رادارها و لیدار اشیاء را شناسایی می‌کند) است.

ایده‌هایی جالب برای استفاده از دیتاست‌های اتومبیل‌های خودران

• طراحی برنامه‌ای ساده برای اتومبیل‌های خودران: با استفاده از یکی از دیتاست‌های بالا و داده‌های مربوط به تجربیات مختلف رانندگی در شرایط آب‌وهوایی متفاوت، برنامه خود را آموزش دهید.

اینترنت اشیاء

کاربردهای یادگیری ماشینی در حوزه اینترنت اشیاء روزبه‌روز درحال گسترش است. شما به عنوان یک مبتدی در دنیای یادگیری ماشینی ممکن است دانش لازم برای طراحی برنامه‌های اینترنت اشیاء کاربردی و پیشرفته که از یادگیری ماشینی استفاده می‌کنند را نداشته باشید، اما قطعاً می‌توانید با شناخت دیتاست‌های مربوطه، به این دنیای شگفت‌انگیز قدم بگذارید.

 

نام دیتاستتوضیح مختصر
Wayfinding, Path Planning, and Navigation Datasetاین دیتاست حاوی نمونه‌هایی از مسیریابی درون یک ساختمان (کتابخانه Waldo در دانشگاه غرب میشیگان) است. این داده‌ها به‌طورمعمول در نرم‌افزارهای مسیریابی به‌کار گرفته می‌شوند.
ARAS Human Activity Datasetاین دیتاست یک دیتاست در حوزه تشخیص فعالیت‌های انسانی است که از ۲ خانوار واقعی جمع‌آوری شده که شامل بیش از ۲۶ میلیون داده از حسگرها و بیش از ۳۰۰۰ فعالیت انجام‌شده می‌باشد.

یک ایده جالب برای استفاده از دیتاست‌های اینترنت اشیاء:

• طراحی یک دستگاه پوشیدنی برای پیگیری فعالیت‌های افراد: با استفاده از دیتاست ARAS Human Activity Dataset، یک دستگاه پوشیدنی را آموزش دهید تا بتواند فعالیت‌های افراد را تمیز دهد.

پس از به پایان رساندن مطالعه این لیست‌ها، نباید احساس محدودیت کنید. این دیتاست‌ها تنها تعدادی از دیتاست‌هایی هستند که می‌توانید در برنامه‌های کاربردی مبتنی بر یادگیری ماشینی از آن‌ها استفاده کنید. در فضای اینترنت می‌توانید دیتاست‌های بهتری نیز برای پروژه یادگیری ماشینی خود پیدا کنید.

می‌توانید در وب‌سایت‌های Kaggle، UCI Machine Learning Repository،  Kdnugget، Awesome Public Datasets,  و  Reddit Datasets Subredditدیتاست‌های بیشتری پیدا کنید.

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

منبع: hooshio.com

چگونه دیتاست ‌های نامتوازن را در یادگیری عمیق مدیریت کنیم؟


همیشه همه داده‌‍‌ها کامل و خالی از عیب‌ و نقص نیستند. اگر دیتاست کاملاً متوازنی در اختیار داشته باشید، آدم بسیار خوش‌شانسی هستید در غیر این صورت مدیریت دیتاست ‌های نامتوازن اهمیت بسیاری پیدا می‌کند. اکثر مواقع، داده‌ها تا حدی نامتوازن هستند. این مورد زمانی اتفاق می‌افتد که هر کدام از دسته‌ها تعداد نمونه‌های متفاوتی داشته باشند.

 

چرا ما بیشتر تمایل داریم تا داده‌های متوازن داشته باشیم؟

پیش از آنکه زمان زیادی برای انجام پروژه‌های طولانی یادگیری عمیق اختصاص دهید، باید بدانید که هدف از انجام این کار چیست. کسب این دانش باید آن‌قدر با اهمیت باشد و بیارزد که ارزش وقت گذاشتن را داشته باشد. روش‌های متوازن‌کردن دسته‌های دیتاست تنها زمانی ضروری هستند که دسته‌های اقلیت را مورد توجه قرار دهیم. برای نمونه، فرض کنید می‌خواهیم بدانیم که آیا خرید مسکن با توجه به شرایط فعلی بازار، خصوصیات مسکن و توان مالی‌مان منطقی است یا خیر. اگر مدل، عدم خرید خانه را به ما توصیه کند، فرق چندانی نخواهد کرد. در این مورد، اگر در خرید مسکن موفق شویم، گام مهمی برداشته‌ایم چرا که سرمایه‌گذاری عظیمی به شمار می‌آید. اگر در خرید مسکن دلخواه‌مان موفق نشویم، این فرصت را داریم که دنبال موارد دیگر باشیم. در صورتی که به اشتباه روی چنین دارایی بزرگی سرمایه‌گذاری کنیم، یقیناً باید منتظر پیامدهای کارمان بمانیم.
در این مثال، نیاز داریم که دسته “خرید” که در اقلیت هستند بسیار بسیار دقیق تعیین شده باشند، اما برای دسته «عدم خرید» این مورد اهمیت چندانی ندارد (چون به اندازه کافی داده در این دسته وجود دارد). از آنجا که «خرید» در داده‌های ما نادر است، مدل‌مان در یادگیری دستۀ «عدم خرید» سوگیری خواهد داشت زیرا بیشترین داده را دارد و احتمال می‌رود عملکرد ضعیفی در دسته «خرید» بر جای بگذارد. به همین منظور، لازم است داده‌های خود را متوازن کنیم. اگر دسته‌های اقلیت را مورد بی‌توجهی قرار دهیم، چه اتفاقی رخ می‌دهد؟ برای مثال، فرض کنید در حال دسته‌بندی تصاویر هستیم و توزیع دسته به شکل زیر در آمده است:

دیتاست ‌های نامتوازن

دیتاست ‌های نامتوازن

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

روش «متوازن‌ کردن وزن » 

روش «متوازن‌ کردن وزن» با تغییر وزن‌های هر نمونه آموزشی سعی در متوازن کردنِ داده‌ها دارد. در حالت عادی، هر نمونه و دسته در تابع زیان وزن یکسانی خواهد داشت. اما اگر برخی دسته‌ها یا نمونه‌های آموزشی اهمیت بیشتری داشته باشند، وزن بیشتری خواهند داشت. بگذارید یک بار دیگر به مثال فوق در رابطه با خرید مسکن اشاره کنیم. به دلیل اینکه دقتِ دستۀ «خرید» برایمان اهمیت دارد، انتظار می‌رود نمونه‌های آموزشیِ آن دسته تاثیر بسزایی بر تابع زیان داشته باشند.
با ضرب زیان هر نمونه به ضریبی معین (بسته به دسته‌ها)، می‌توان به دسته‌ها وزن داد. می‌توان در Keras اقدام به چنین کاری کرد:

 

۱

۲

۳

۴

import keras

class_weight = {"buy": ۰.۷۵,

"don't buy": ۰.۲۵}

model.fit(X_train, https://hooshio.com/%da%۸۶%da%af%d9%۸۸%d9%۸۶%d9%۸۷-%d8%af%db%۸c%d8%aa%d8%a7%d8%b3%d8%aa-%d9%۸۷%d8%a7%db%۸c-%d9%۸۶%d8%a7%d9%۸۵%d8%aa%d9%۸۸%d8%a7%d8%b2%d9%۸۶-%d8%b1%d8%a7-%d8%af%d8%b1-%db%۸c%d8%a7%d8%af%da%af%db%۸c%d8%b1/Y_train, epochs=۱۰, batch_size=۳۲, class_weight=class_weight)

در کد بالا در متغیری که تحت عنوان class_weight تعریف کردیم ، دستۀ «خرید» باید ۷۵ درصد از وزنِ تابع زیان را داشته باشد چرا که اهمیت بیشتری دارد. دستۀ «عدم خرید» نیز باید ۲۵ درصد باقی‌مانده را به خود اختصاص دهد. البته امکان دست‌کاری و تغییر این مقادیر برای ایجاد مناسب‌ترین شرایط وجود دارد. اگر یکی از دسته‌هایمان نمونه‌های بیشتری از دیگری داشته باشد، می‌توانیم از این روش متوازن‌سازی استفاده کنیم. به جای اینکه زمان و منابع خود را به جمع‌آوری بیشتر دسته‌های اقلیت اختصاص دهیم، می‌توانیم شرایطی را رقم بزنیم که طی آن، روش متوازن‌سازی وزن همه دسته‌ها را وادار کند به میزان یکسان در تابع زیان نقش داشته باشند.
یکی دیگر از روش‌ها برای متوازن کردن وزن نمونه‌های آموزشی، «زیان کانونی» نام دارد. بیایید جزئیات کار را با هم بررسی کنیم: ما در دیتاست‌مان چند نمونه آموزشی داریم که دسته‌بندی راحت‌تری در مقایسه با بقیه دارند. در طی فرایند آموزش، این نمونه‌ها با ۹۹ درصد دقت دسته‌بندی خواهند شد، اما شاید نمونه‌های دیگر عملکرد بسیار ضعیفی داشته باشند. مشکل این است که آن دسته از نمونه‌های آموزشی که به راحتی دسته‌بندی شده‌اند، کماکان در تابع زیان به ایفای نقش می‌پردازند. اگر داده‌های چالش‌برانگیز بسیاری وجود دارد که در صورت دسته‌بندی درست می‌توانند دقت کار را تا حد زیادی بالا ببرند، چرا باید وزن برابری به آنها بدهیم؟

دیتاست ‌های نامتوازن

«زیان کانونی» دقیقاً برای حل چنین مسئله‌ای در نظر گرفته شده است. زیان کانونی به جای اینکه وزن برابری به همه نمونه‌های آموزشی دهد، وزن نمونه‌های دسته‌بندی شده با دقت بالا (داده هایی که دسته بندی شان به راحتی برای شبکه امکان پذیر است) را کاهش می‌دهد. پس داده‌هایی که دسته‌بندی آنها به سختی انجام می‌شود، مورد تاکید قرار می‌گیرند. در عمل، وقتی با عدم توازن داده‌ها روبرو هستیم، دسته اکثریت‌مان به سرعت دسته‌بندی می‌شود زیرا داده‌های زیادی برای آن داریم. بنابراین، برای اینکه مطمئن شویم دقت بالایی در دسته اقلیت حاصل می‌آید، می‌توانیم از تابع زیان استفاده کنیم تا وزن بیشتری به نمونه دسته‌های اقلیت داده شود. تابع زیان می‌تواند به راحتی در Keras به اجرا درآید.

 

۱

۲

۳

۴

۵

۶

۷

۸

۹

۱۰

۱۱

۱۲

import keras

from keras import backend as K

import tensorflow as tf

# Define our custom loss function

def focal_loss(y_true, y_pred):

gamma = ۲.۰, alpha = ۰.۲۵https://hooshio.com/%da%۸۶%da%af%d9%۸۸%d9%۸۶%d9%۸۷-%d8%af%db%۸c%d8%aa%d8%a7%d8%b3%d8%aa-%d9%۸۷%d8%a7%db%۸c-%d9%۸۶%d8%a7%d9%۸۵%d8%aa%d9%۸۸%d8%a7%d8%b2%d9%۸۶-%d8%b1%d8%a7-%d8%af%d8%b1-%db%۸c%d8%a7%d8%af%da%af%db%۸c%d8%b1/

pt_1 = tf.where(tf.equal(y_true, ۱), y_pred, tf.ones_like(y_pred))

pt_0 = tf.where(tf.equal(y_true, ۰), y_pred, tf.zeros_like(y_pred))

return -K.sum(alpha * K.pow(۱. - pt_1, gamma) * K.log(pt_1))-K.sum((۱-alpha) * K.pow( pt_0, gamma) * K.log(۱. - pt_0))

# Compile our model

adam = Adam(lr=۰.۰۰۰۱)

model.compile(loss=[focal_loss], metrics=["accuracy"], optimizer=adam)

 

 

روش‌های نمونه‌گیری OVER-SAMPLING و UNDER-SAMPLING

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

Under and and Over Sampling

در سمت چپ و راست تصویر فوق، دسته آبی نمونه‌های بیشتری نسبت به دسته نارنجی دارد. در این مورد، دو گزینه پیش‌پردازش وجود دارد که می‌‍‌تواند به آموزش مدل‌های یادگیری ماشین کمک کند. روش Under-sampling بدین معناست که تنها بخشی از داده‌ها را از دسته اکثریت انتخاب می‌کنیم. این گزینش باید برای حفظ توزیع احتمال دسته انجام شود. چقدر راحت! نمونه‌های کمتر باعث می‌شود دیتاست متوازن گردد. روش Oversampling هم به این معناست که نسخه‌هایی از دسته اقلیت ایجاد خواهد شد. هدف از این کار، ایجاد تساویِ تعداد نمونه دسته‌های اقلیت با اکثریت است. ما موفق شدیم دیتاست ‌های نامتوازن را بدون کسب داده‌های بیشتر متوازن کنیم!

منبع: hooshio.com