چگونه هوش مصنوعی را با استفاده از scikit-learn پیاده‌سازی کنیم؟
در این مطلب قصد داریم یکی از قدرتمندترین ابزارهای قابل استفاده در پایتون را برای پیاده‌سازی هوش مصنوعی در کوتاه‌ترین زمان به کار ببریم و شما را با أصول کلی طراحی در این زمینه آشنا کنیم.

760 4_0.gif

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

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

scikit-learn چیست؟

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

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

اسکیت‌لرن چگونه کار می‌کند؟

توسعه و آزمایش الگوریتم‌های یادگیری اسکیت را می‌توان به سه مرحله کلی زیر تقسیم کرد:

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

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

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

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

فراخوانی تابع برای آموزش الگوریتم یادگیری اسکیت تابع .fit() است که برای آموزش هر مدل باید تابع فوق را فراخوانی کنید و دو مولفه از مجموعه داده‌های آموزشی را به آن انتقال دهید. دو مولفه عبارتند از مجموعه داده x، داده‌هایی که ویژگی‌های مجموعه داده را توصیف می‌کند و داده y که اشاره به اطلاعاتی دارد که اهداف سیستم را توصیف می‌کند (ویژگی‌ها (Features) و اهداف (Targets) از اصطلاحات یادگیری ماشین هستند که در اصل به معنی داده x و y هستند). الگوریتم سپس یک مدل ریاضی ایجاد می‌کند که توسط الگوریتم انتخاب شده و در ادامه پارامترهای مدل را به‌گونه‌ای تعیین می‌کند که تا حد ممکن با داده‌های آموزشی ارائه شده مطابقت داشته باشند. در مرحله بعد پارامترها را در مدل ذخیره می‌کند و به شما این امکان را می‌دهد تا نسخه مناسب مدل را در صورت نیاز برای پروژه خود فراخوانی کنید.

تابع آزمایش هماهنگی مدل .score() نام دارد. برای استفاده از این تابع، باید آن‌را فراخوانی کنید و مجموعه داده x که نمایانگر ویژگی‌ها و مجموعه داده y که بیان‌گر اهداف است را ارسال می‌کنید. نکته مهمی که باید در این بخش به آن دقت کنید این است که از مجموعه داده متفاوتی به نام مجموعه داده‌های آزمایشی، برای آموزش مدل استفاده کنید. وقتی یک مدل بر مبنای داده‌های تمرینی ارزش‌گذاری می‌شود، احتمالاً نمره بسیار خوبی خواهد گرفت، زیرا از نظر ریاضی مجبور است با آن مجموعه داده مطابقت داشته باشد. آزمایش واقعی این است که مدل چگونه روی مجموعه داده‌های مختلف عملکرد خوبی داشته باشند، زیرا قرار است روی مجموعه داده‌های واقعی عملکرد خوبی داشته باشد. هنگام فراخوانی تابع تابع .score() بسته اسکیت‌لرن مقدار r² را برمی‌گرداند تا نشان دهد مدل چگونه مجموعه داده‌های ارائه شده y را با استفاده از مجموعه داده ارائه شده x پیش‌بینی کرده است.

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

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

چگونه می‌توان مجموعه داده‌های آموزشی و آزمایشی ایجاد کرد؟

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

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

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

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

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

برای پیاده‌سازی این فرایند باید ابزارهای مورد نیاز برای انجام این کار را فراخوانی کنید. آن‌ها شامل مدل اسکیت‌لرن، تابع train_test_split() و پانداس برای فرآیند تجزیه و تحلیل داده‌ها است. توابع به شرح زیر استفاده می‌شوند:

from scikit-learn.linear_model import LinearRegression
from scikit-learn.model_selection import train_test_split
import pandas as pd

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

data = pd.read_csv('Hamid_Reza_Taebi.csv', index_col = 0)

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

ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را می‌توانید از کتابخانه‌های عمومی سراسر کشور و نیز از دکه‌های روزنامه‌فروشی تهیه نمائید.

ثبت اشتراک نسخه کاغذی ماهنامه شبکه     
ثبت اشتراک نسخه آنلاین

 

کتاب الکترونیک +Network راهنمای شبکه‌ها

  • برای دانلود تنها کتاب کامل ترجمه فارسی +Network  اینجا  کلیک کنید.

کتاب الکترونیک دوره مقدماتی آموزش پایتون

  • اگر قصد یادگیری برنامه‌نویسی را دارید ولی هیچ پیش‌زمینه‌ای ندارید اینجا کلیک کنید.

ایسوس

نظر شما چیست؟