Python for AI/NumPy/Lesson 38
Aggregation: sum, mean, axis
অনেক মান থেকে একটা সারাংশ — sum, mean, std, min, max, argmax; axis দিয়ে row বা column ধরে হিসাব; আর model-এর probability থেকে accuracy বের করা।
- সময়
- 22 মিনিট
- Exercise
- 1
- Challenge
- 1
- Quiz
- 3 প্রশ্ন
সহজ ভাষায়
Aggregation মানে অনেক মান থেকে একটা সারাংশ বের করা — যোগফল, গড়, সর্বোচ্চ:
কেন দরকার?
- Dataset বোঝা — প্রতিটা feature-এর গড়, পরিসর, std
- Model evaluation — accuracy, গড় loss
- Prediction — probability থেকে সবচেয়ে সম্ভাব্য class (
argmax) - Batch-এর loss — প্রতিটা sample-এর loss-এর গড়
axis: সবচেয়ে বিভ্রান্তিকর, সবচেয়ে গুরুত্বপূর্ণ
2D array-তে axis বলে দেয় কোন dimension চেপে ফেলা হবে:
subject 0 subject 1 subject 2
student 0 [ 72 85 64 ] -> axis=1: row ধরে
student 1 [ 90 78 88 ] (প্রতিটা student-এর মোট)
student 2 [ 55 92 70 ]
| | |
v axis=0: column ধরে
(প্রতিটা subject-এর গড়)
মনে রাখার উপায়:
axis=0দিলে shape থেকে প্রথম সংখ্যাটা মুছে যায় — (3, 3) থেকে (3,) যেটা column-গুলোর সংখ্যা। ML dataset-এ (sample, feature) —axis=0মানে "সব sample মিলিয়ে, প্রতিটা feature-এর জন্য"।
argmax / argmin / argsort
মান না, position দরকার হলে:
keepdims: broadcasting-এর বন্ধু
প্রতিটা row-কে তার নিজের যোগফল দিয়ে ভাগ করতে চাই (প্রতিটা row-এর যোগফল যেন 1 হয়):
keepdims=True shape রাখে (2, 1) — তাই broadcasting ঠিকমতো প্রতিটা row-কে ভাগ করে। এটা না দিলে shape হতো (2,), আর broadcasting ভুল দিকে মেলাত।
Missing value: nan-safe function
Exercise
Exercise
Class report
scores হলো 4×3 array — ৪ জন student (row), ৩টা subject (column)।
subject_avg— প্রতিটা subject-এর গড় (৩টা মান)student_total— প্রতিটা student-এর মোট (৪টা মান)topper— সবচেয়ে বেশি মোট নম্বর পাওয়া student-এর index
axis দিয়ে করো, loop ছাড়া।
Quiz
Challenge
Challenge
Probability থেকে accuracy
একটা classifier প্রতিটা sample-এর জন্য প্রতিটা class-এর probability দিয়েছে — probs shape (n_samples, n_classes)। আসল label labels-এ।
accuracy(probs, labels) লেখো:
- প্রতিটা sample-এর prediction = সবচেয়ে বেশি probability-র class
- Accuracy = কত ভাগ prediction ঠিক (0 থেকে 1, একটা
float)
Loop ছাড়া।
বাস্তবে কোথায় ব্যবহার হয়?
Confusion matrix — কোন class কোন class-এর সাথে গুলিয়ে যাচ্ছে, model evaluation-এর সবচেয়ে কাজের table:
Diagonal = ঠিক prediction। Row ধরে যোগফল (axis=1) = প্রতিটা আসল class কতগুলো। এখান থেকে দেখা যায় "neutral" সবচেয়ে বেশি গুলিয়ে যায় — model-কে আরও neutral উদাহরণ দেওয়া দরকার।
Interview প্রশ্ন
- Beginner:
axis=0আরaxis=1-এর পার্থক্য কী? - Intermediate:
keepdims=Trueকখন আর কেন দরকার? - Advanced: Imbalanced dataset-এ accuracy কেন misleading? Confusion matrix থেকে precision আর recall কীভাবে বের করবে?
এরপর কী?
এতক্ষণ সব data হাতে বানিয়েছি। ML-এ random number সবখানে — data shuffle, weight initialize, train/test ভাগ। কিন্তু "random" হয়েও প্রতিবার একই ফলাফল চাই! পরের lesson: Random Numbers।