Introduction
এই ভিডিওর নির্দিষ্ট অংশটিতে আমরা মেশিন লার্নিংয়ের অন্যতম সহজ এবং জনপ্রিয় একটি অ্যালগরিদম K-Nearest Neighbors (KNN) সম্পর্কে জানবো। সহজ কথায় বলতে গেলে, KNN হলো এমন একটি পদ্ধতি যেখানে কোনো নতুন ডাটা পয়েন্ট কোন ক্যাটাগরিতে পড়বে, তা ঠিক করা হয় তার আসেপাশের বা 'প্রতিবেশী' ডাটা পয়েন্টগুলোর ওপর ভিত্তি করে। ভিডিওর এই অংশে হাতে-কলমে কোডিংয়ের মাধ্যমে দেখানো হয়েছে কীভাবে একটি ডাটাবেজ থেকে ডাটা নিয়ে সেগুলোকে ট্রেইনিং (Training) এবং টেস্টিং (Testing) সেটে ভাগ করে KNN মডেল চালানো যায়।
পার্ট ১: ডাটা প্রিপারেশন এবং স্কেলিং (Data Preparation & Scaling)
যেকোনো মডেল চালানোর আগে আমাদের ডাটাগুলোকে গুছিয়ে নিতে হয়। কারণ ডাটার একেকটি ফিচারের মান একেক রকম হতে পারে (যেমন: কোনোটি ০-১ এর মধ্যে, আবার কোনোটি ১০০০-২০০০ এর মধ্যে)।
রেফারেন্স: [52:42]
বিস্তারিত আলোচনা: ভিডিওর শুরুতে দেখানো হয়েছে কীভাবে StandardScaler ব্যবহার করে ডাটাকে স্কেল করতে হয়। স্কেলিং মানে হলো সব ডাটাকে একটি নির্দিষ্ট সীমার মধ্যে নিয়ে আসা যাতে কোনো বড় সংখ্যা মডেলকে বিভ্রান্ত করতে না পারে। যেমন, আপনার কাছে যদি উচ্চতা (ফুট-এ) এবং ওজন (কেজি-তে) থাকে, তবে ওজন সংখ্যায় বড় হওয়ায় মডেল ভাববে ওজনই বেশি গুরুত্বপূর্ণ। স্কেলিং করলে দুটিই সমান গুরুত্ব পাবে।
কোড স্নিপেট:
Python
from sklearn.preprocessing import StandardScaler
# স্কেলার তৈরি এবং ডাটা ফিট করা
scaler = StandardScaler()
X = scaler.fit_transform(X)
ব্যাখ্যা: এখানে StandardScaler ব্যবহার করে ডাটা X-কে এমনভাবে পরিবর্তন করা হয়েছে যাতে এর গড় (Mean) ০ এবং স্ট্যান্ডার্ড ডেভিয়েশন ১ হয়।
পার্ট ২: KNN মডেল ইমপ্লিমেন্টেশন (KNN Implementation)
এই অংশে সরাসরি স্কিট-লার্ন (scikit-learn) লাইব্রেরি ব্যবহার করে KNN মডেল তৈরি করা হয়েছে।
রেফারেন্স: [58:15]
বিস্তারিত আলোচনা: মডেল তৈরির সময় আমাদের বলে দিতে হয় 'K' এর মান কত হবে। 'K' মানে হলো আমরা কয়টি প্রতিবেশীকে দেখবো। যদি K=3 হয়, তবে নতুন ডাটাটির সবচেয়ে কাছের ৩টি পয়েন্টকে দেখা হবে। এই ৩টির মধ্যে যারা সংখ্যাগুরু (Majority), নতুন ডাটাটি সেই দলেই পড়বে। ভিডিওতে দেখানো হয়েছে KNeighborsClassifier ব্যবহার করে খুব সহজে এই কাজটি করা যায়।
কোড স্নিপেট:
Python
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report
# মডেল তৈরি করা যেখানে প্রতিবেশী সংখ্যা ৩
knn_model = KNeighborsClassifier(n_neighbors=3)
knn_model.fit(X_train, y_train)
ব্যাখ্যা: - n_neighbors=3: মানে আমরা কাছের ৩টি পয়েন্ট চেক করছি।
.fit(): এই ফাংশনটি দিয়ে মডেলকে আমাদের ট্রেইনিং ডাটা দিয়ে শেখানো হচ্ছে।
পার্ট ৩: প্রেডিকশন এবং রেজাল্ট যাচাই (Prediction & Evaluation)
মডেল শেখার পর সে কতটা ভালো কাজ করছে তা পরীক্ষা করতে হয়।
রেফারেন্স: [01:05:20]
বিস্তারিত আলোচনা: ট্রেইনিং শেষে আমরা 'টেস্ট ডাটা' (Test Data) দিয়ে মডেলকে পরীক্ষা করি। মডেল যে উত্তর দেয় (y_pred), তার সাথে আসল উত্তরের (y_test) তুলনা করা হয়। ভিডিওতে classification_report ব্যবহার করে দেখা হয়েছে মডেলের একুরেসি (Accuracy), প্রিসিশন (Precision) এবং রিকল (Recall) কেমন।
কোড স্নিপেট:
Python
# টেস্ট ডাটা দিয়ে প্রেডিকশন করা
y_pred = knn_model.predict(X_test)
# রেজাল্ট দেখা
print(classification_report(y_test, y_pred))
ব্যাখ্যা: এই রিপোর্টের মাধ্যমে আমরা বুঝতে পারি মডেলটি কত শতাংশ ক্ষেত্রে সঠিক উত্তর দিতে পেরেছে।
এনালাইসিস এবং আমার ভাবনা (Analysis & Perception)
কনটেন্ট ক্রিয়েটর যা বোঝাতে চেয়েছেন: ভিডিওতে ক্রিয়েটর মূলত এটাই বোঝাতে চেয়েছেন যে, জটিল ম্যাথমেটিক্স না জানলেও লাইব্রেরি ব্যবহার করে খুব সহজে KNN এর মতো মডেল চালানো সম্ভব। তবে ডাটা স্কেলিং যে কতটা গুরুত্বপূর্ণ, তা তিনি বারবার গুরুত্ব দিয়েছেন।
বাস্তবতা এবং সীমাবদ্ধতা: KNN সহজ হলেও বড় ডাটার ক্ষেত্রে এটি বেশ ধীরগতির হতে পারে, কারণ প্রতিবার নতুন ডাটার জন্য তাকে সব পয়েন্টের দূরত্ব মাপতে হয়। এছাড়া 'K' এর মান কত হবে তা আগে থেকে বলা কঠিন; এটি বারবার পরীক্ষা করে দেখতে হয়।
পরামর্শ: ১. বিকল্প: যদি আপনার ডাটা অনেক বড় হয়, তবে KNN এর বদলে 'Random Forest' বা 'XGBoost' ট্রাই করতে পারেন। ২. পরামর্শ: সবসময় K এর মান বিজোড় (Odd Number) রাখার চেষ্টা করবেন (যেমন ৩, ৫ বা ৭), যাতে ড্র (Tie) হওয়ার সম্ভাবনা না থাকে। ৩. ট্যাক্সোনোমি: KNN হলো একটি 'Instance-based' এবং 'Lazy Learner' অ্যালগরিদম। এটি আগে থেকে কোনো নিয়ম মুখস্থ করে না, বরং ডাটা আসার সময় তাৎক্ষণিক হিসাব করে।
সবশেষে বলা যায়, বিগিনারদের জন্য মেশিন লার্নিং শুরু করার জন্য KNN একটি চমৎকার শুরু। এটি সহজভাবে লজিক বুঝতে সাহায্য করে।
[
Machine Learning for Everybody – Full Course
freeCodeCamp.org · 9.4M views
](http://www.youtube.com/watch?v=i_LwzRVP7bg)

মন্তব্যসমূহ
একটি মন্তব্য পোস্ট করুন
আপনার সমস্যাটি কমেন্ট করে আমাদের জানান :-d