آموزش و تست یادگیری ماشین
- صفحه قبل مقیاسدهی
- صفحه بعدی درخت تصمیمگیری
ارزیابی مدل
در یادگیری ماشین، ما مدلهایی ایجاد میکنیم تا نتایج برخی از رویدادها را پیشبینی کنیم، مانند پیشبینی میزان انتشار دیاکسید کربن ماشین در فصل قبلی، زمانی که وزن و گنجایش موتور را میدانستیم.
برای ارزیابی اینکه مدل به اندازه کافی خوب است یا خیر، میتوانیم از روشی به نام آموزش/تست استفاده کنیم.
آموزش/تست چیست
آموزش/تست یک روش برای اندازهگیری دقت مدل است.
به دلیل اینکه ما بستهی داده را به دو گروه تقسیم کردهایم: مجموعهی آموزشی و مجموعهی تست، آن را آموزش/تست مینامیم.
۸۰٪ برای آموزش و ۲۰٪ برای تست استفاده میشود.
میتوانید از مجموعهی آموزشی برای تدریب مدل استفاده کنید.
میتوانید از مجموعهی تست برای تست مدل استفاده کنید.
تدریب مدل به معنای ایجاد مدل است.
تست مدل به معنای تست دقت مدل است.
از بستهی داده شروع کنید
از بستهی دادهای که میخواهید تست کنید شروع کنید.
بستهی دادههای ما ۱۰۰ مشتری در فروشگاه و عادات خرید آنها را نشان میدهد.
مثال
import numpy import matplotlib.pyplot as plt numpy.random.seed(2) x = numpy.random.normal(3, 1, 100) y = numpy.random.normal(150, 40, 100) / x plt.scatter(x, y) plt.show()
نتیجه:
محور x دقیقاتی است که قبل از خرید میگذرد.
محور y مقدار پولی است که در خرید هزینه شده است.

جداسازی آموزشی/تست
مجموعه آموزشی باید 80٪ انتخاب تصادفی از دادههای اصلی باشد.
مجموعه تست باید 20٪ باقیمانده باشد.
train_x = x[:80] train_y = y[:80] test_x = x[80:] test_y = y[80:]
نمایش مجموعه آموزشی
نمایش نمودار نقطهای مشابه مجموعه آموزشی:
مثال
plt.scatter(train_x, train_y) plt.show()
نتیجه:
این نیز مانند مجموعه دادههای اصلی به نظر میرسد، بنابراین به نظر میرسد که انتخاب معقولی است:

نمایش مجموعه تست
برای اطمینان از اینکه مجموعه تست کاملاً متفاوت نیست، باید به مجموعه تست نیز نگاه کنیم.
مثال
plt.scatter(test_x, test_y) plt.show()
نتیجه:
مجموعه تست نیز مانند مجموعه دادههای اصلی به نظر میرسد:

تطبیق مجموعه دادهها
مجموعه دادهها چگونه است؟ من فکر میکنم بهترین تطبیق برای آن تابع بازگشتی چندجهانی است، بنابراین بیایید یک خط چندجهانی بازگشتی رسم کنیم.
برای رسم خطی که از دادهها عبور میکند، ما از ماژول matplotlib استفاده میکنیم plott()
روش:
مثال
خط چندجهانی بازگشتی را که از دادههای دادهها عبور میکند، رسم کنید:
import numpy import matplotlib.pyplot as plt numpy.random.seed(2) x = numpy.random.normal(3, 1, 100) y = numpy.random.normal(150, 40, 100) / x train_x = x[:80] train_y = y[:80] test_x = x[80:] test_y = y[80:] mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4)) myline = numpy.linspace(0, 6, 100) plt.scatter(train_x, train_y) plt.plot(myline, mymodel(myline)) plt.show()
نتیجه:

این نتایج میتواند از ما حمایت کند تا پیشنهاد کنیم که دادههای مجموعه دادهها را با تابع بازگشتی چندجهانی تطبیق دهیم، حتی اگر تلاش کنیم تا دادههای خارج از مجموعه دادهها را پیشبینی کنیم که ممکن است نتایج عجیبی به همراه داشته باشد. به عنوان مثال: این خط نشان میدهد که یک مشتری 6 دقیقه در فروشگاه میماند و یک خرید 200 تومانی انجام میدهد. این ممکن است نشانهای از بیشتuning باشد.
اما نمره R-squared چطور؟ نمره R-squared score به خوبی نشاندهنده تطابق مجموعه دادههای من با مدل است.
R2
آیا R2 یا به عبارت دیگر R مربع (R-squared) را به خاطر میآورید؟
این میزان رابطه بین محور x و y را اندازهگیری میکند، که در محدوده 0 تا 1 قرار دارد، جایی که 0 نشاندهنده عدم رابطه و 1 نشاندهنده رابطه کامل است.
پلاگین sklearn یک ماژول به نام rs_score()
این روش، که به ما کمک میکند این رابطه را پیدا کنیم.
در اینجا، ما میخواهیم رابطه بین زمانی که مشتری در فروشگاه میماند و مقداری که خرج میکند را ارزیابی کنیم.
مثال
چگونه دادههای آموزشی ما در تابع بازگشتی چندجهانی تطابق دارند؟
import numpy از sklearn.metrics import r2_score numpy.random.seed(2) x = numpy.random.normal(3, 1, 100) y = numpy.random.normal(150, 40, 100) / x train_x = x[:80] train_y = y[:80] test_x = x[80:] test_y = y[80:] mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4)) r2 = r2_score(train_y, mymodel(train_x)) print(r2)
توجه:نتیجه 0.799 نشان میدهد که رابطه خوبی وجود دارد.
ورود مجموعه تست
در حال حاضر، حداقل در مورد دادههای آموزشی، ما یک مدل خوبی ایجاد کردهایم.
پس، ما باید از دادههای تست برای تست مدل استفاده کنیم تا بررسی کنیم که آیا نتایج مشابهی ارائه میدهد یا خیر.
مثال
اجازه دهید در حالی که از دادههای تست استفاده میکنیم،确定 R2 فرقه را مشخص کنیم:
import numpy از sklearn.metrics import r2_score numpy.random.seed(2) x = numpy.random.normal(3, 1, 100) y = numpy.random.normal(150, 40, 100) / x train_x = x[:80] train_y = y[:80] test_x = x[80:] test_y = y[80:] mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4)) r2 = r2_score(test_y, mymodel(test_x)) print(r2)
توجه:نتیجه 0.809 نشان میدهد که این مدل برای مجموعه دادههای تست نیز مناسب است و ما مطمئنیم که میتوانیم از این مدل برای پیشبینی مقادیر آینده استفاده کنیم.
مقدار پیشبینی
حالا که مدل ما را معتبر کردهایم، میتوانیم به پیشبینی مقادیر جدید شروع کنیم.
مثال
اگر مشتری خریدار در فروشگاه 5 دقیقه بماند، او/او چقدر هزینه خواهد کرد؟
print(mymodel(5))
این نمونه پیشبینی میکند که مشتری 22.88 دلار هزینه کرده است، که به نظر میرسد با نمودار مطابقت دارد:

- صفحه قبل مقیاسدهی
- صفحه بعدی درخت تصمیمگیری