মেশিন লার্নিং - ট্রেনিং/টেস্ট

মডেল মূল্যায়ন

মেশিন লার্নিংতে, আমরা কোনও ঘটনার ফলাফল পূর্বাভাস দেওয়ার জন্য মডেল তৈরি করি, যেমন পূর্ববর্তী চাপে আমরা ভার এবং ইঞ্জিনের ডিজিটাল পরিমাপ জানতে পারলাম এবং গাড়ির কার্বন ডাইঅক্সাইড উৎসের পূর্বাভাস দিতে পারলাম

মডেলটি কাফি ভালো হয় কিনা তার পরীক্ষা করার জন্য আমরা একটি পদ্ধতি ব্যবহার করি যাকে প্রশিক্ষণ/পরীক্ষা বলা হয়

প্রশিক্ষণ/পরীক্ষা কীভাবে

প্রশিক্ষণ/পরীক্ষা এটি মডেলের নিয়মিততা পরীক্ষা করার একটি পদ্ধতি

কারণটি হল আমরা তথ্যসেটকে দুটি গ্রুপে ভাগ করেছি: প্রশিক্ষণসেট এবং পরীক্ষাসেট

৮০% প্রশিক্ষণের জন্য এবং ২০% পরীক্ষার জন্য

আপনি মডেলটি প্রশিক্ষণের জন্য প্রশিক্ষণসেট ব্যবহার করতে পারেন。

আপনি মডেলটি পরীক্ষার জন্য পরীক্ষাসেট ব্যবহার করতে পারেন。

মডেলটি প্রশিক্ষণ করা এটি মডেল তৈরি করার অর্থ

মডেলটি পরীক্ষা করা এটি মডেলের নিয়মিততা পরীক্ষা করার অর্থ

তথ্যসেট থেকে শুরু করুন

পরীক্ষার জন্য তথ্যসেট থেকে শুরু করুন。

আমাদের ডেটাসেটটি শপিংকেন্দ্রে ১০০ জন গ্রাহক এবং তাদের কেনার আদতকে প্রদর্শন করে।

উদাহরণ

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 টাকার খরচ করবে। এটা উপক্রমণের সঙ্কেত হতে পারে。

কিন্তু R-squared স্কোর কী? R-squared score আমার ডাটাসেটের মডেলের সাথে ফিটিং স্তরকে ভালোভাবে ইনডিকেট করে।

R2

আপনি R2, বা R-স্কোয়ার (R-squared) কথা স্মরণ করতে পারেন?

যা x এবং y-এক্সকেসপেক্টরের মধ্যে সম্পর্ককে পরিমাপ করে, 0 থেকে 1 এর মধ্যে মান নিয়ে, যেখানে 0 সম্পর্ক নেই, 1 দক্ষিণাত্মক সম্পর্ক হয়。

sklearn মডিউলে একটি নামবহ হল rs_score() এর পদ্ধতিটি, যা আমাদের এই সম্পর্ক খুঁজে বের করতে সাহায্য করবে。

এখানে, আমরা গ্রাহকদের দোকানে থাকা সময় এবং তারা কত টাকা খরচ করে একটি সম্পর্ক পরিমাপ করতে চাই。

উদাহরণ

আমাদের প্রশিক্ষণ ডাটা পলিনোমিয়াল রিগ্রেশনের ক্ষেত্রে যথাযথত্ব কী হবে?

import numpy
from 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
from 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 ডলার খরচ করেছে, যা বাস্তবে গ্রাফের সাথে একইভাবে দেখানো হয়: