# import load_iris function from datasets module
from sklearn.datasets import load_iris
# save "bunch" object containing iris dataset and its attributes
iris = load_iris()
বেছে নিন একটা মডেল ক্লাস। এখানে আমরা বেছে নিয়েছি K-nearest neighbors ক্লাসিফায়ার।
from sklearn.neighbors import KNeighborsClassifier
মডেলের হাইপার-প্যারামিটার বেছে নিন।
সাইকিট-লার্ন কনভেনশন অনুযায়ী মডেলকে "এস্টিমেটর" বলি।
“এস্টিমেটর”কে ইনস্ট্যান্সিয়েট করা। মানে মডেলের একটা ‘ইনস্ট্যান্স’ চালু করা।
সাইকিট-লার্নে আমরা মডেলের ‘ইনস্ট্যান্স’ চালু করার সময় হাইপার-প্যারামিটারগুলোর ভ্যালুগুলোকে পাঠিয়ে দেই ওই মডেলে।
knn = KNeighborsClassifier(n_neighbors=1)
print(knn)
KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski', metric_params=None, n_jobs=1, n_neighbors=1, p=2, weights='uniform')
knn
KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski', metric_params=None, n_jobs=1, n_neighbors=1, p=2, weights='uniform')
ডাটাকে সাজাই ফীচার ম্যাট্রিক্স এবং টার্গেট ভেক্টরের মতো করে।
এর আগে কি দেখেছি? সাইকিট-লার্ন ডাটা রিপ্রেজেন্টেশনে আমাদের দুই ডাইমেনশনের ফীচার ম্যাট্রিক্স আর এক ডাইমেশনের টার্গেট অ্যারে লাগে।
# ফিচার ম্যাট্রিক্সকে রাখছি "X" এ
X = iris.data
# টার্গেট ভেক্টরকে রাখা হচ্ছে "y" এ
y = iris.target
আমাদের মডেলে ডাটা “ফিট” করা।
ট্রেনিং সেট থেকে (এখানে যেটা আমাদের পুরো ডাটা, ১৫০টা রেকর্ড) মডেল তৈরি করতে আমরা “ফিট” মেথড কল করবো knn অবজেক্ট থেকে। কল করার সঙ্গে সঙ্গে সে দুটো জিনিসকে আর্গুমেন্ট হিসেবে নেয়। দুটো জিনিস, ফিচার অ্যারে আর একটা টার্গেট ভেক্টর। আগের ধাপে বের করা বড় হাতের X আর ছোট হাতের y কে ‘ফিট’ কমান্ড আসলে ফিচার মেট্রিক্স আর টার্গেট ভেক্টরের মধ্যে সম্পর্কটা শিখিয়ে দেয়় মডেলকে।
knn.fit(X, y)
KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski', metric_params=None, n_jobs=1, n_neighbors=1, p=2, weights='uniform')
অজানা, নতুন ডাটার লেবেল প্রেডিক্ট করা।
নতুন ডাটাকে বলছি “আউট অফ স্যাম্পল” ডাটা। মডেল ট্রেনিং থেকে শিখে প্রেডিক্ট করে নতুন ডাটাকে একটা লেবেল দিয়ে। আউটপুট দিচ্ছে একটা নামপাই অ্যারে।
knn.predict([[3, 5, 4, 2]])
array([2])
2 = Virginica
Class labels : {0, 1, 2}, distribution: [50, 50, 50]
0 = setosa, 1 = versicolor, 2 = virginica.