মূল content-এ যাও

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 মানে অনেক মান থেকে একটা সারাংশ বের করা — যোগফল, গড়, সর্বোচ্চ:

main.py

কেন দরকার?

  • 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-এর গড়)
main.py

মনে রাখার উপায়: axis=0 দিলে shape থেকে প্রথম সংখ্যাটা মুছে যায় — (3, 3) থেকে (3,) যেটা column-গুলোর সংখ্যা। ML dataset-এ (sample, feature) — axis=0 মানে "সব sample মিলিয়ে, প্রতিটা feature-এর জন্য"।

argmax / argmin / argsort

মান না, position দরকার হলে:

main.py

keepdims: broadcasting-এর বন্ধু

প্রতিটা row-কে তার নিজের যোগফল দিয়ে ভাগ করতে চাই (প্রতিটা row-এর যোগফল যেন 1 হয়):

main.py

keepdims=True shape রাখে (2, 1) — তাই broadcasting ঠিকমতো প্রতিটা row-কে ভাগ করে। এটা না দিলে shape হতো (2,), আর broadcasting ভুল দিকে মেলাত।

Missing value: nan-safe function

main.py

Exercise

Exercise

Class report

+20 XP

scores হলো 4×3 array — ৪ জন student (row), ৩টা subject (column)।

  • subject_avg — প্রতিটা subject-এর গড় (৩টা মান)
  • student_total — প্রতিটা student-এর মোট (৪টা মান)
  • topper — সবচেয়ে বেশি মোট নম্বর পাওয়া student-এর index

axis দিয়ে করো, loop ছাড়া।

solution.py

Quiz

  1. Q1a = np.ones((5, 3)) — a.sum(axis=0)-এর shape কী?
  2. Q2np.array([3, 9, 4]).argmax() কত?
  3. Q3np.mean(np.array([1, 2, np.nan])) কত?
0/3 answered

Challenge

Challenge

Probability থেকে accuracy

+50 XP

একটা classifier প্রতিটা sample-এর জন্য প্রতিটা class-এর probability দিয়েছে — probs shape (n_samples, n_classes)। আসল label labels-এ।

accuracy(probs, labels) লেখো:

  1. প্রতিটা sample-এর prediction = সবচেয়ে বেশি probability-র class
  2. Accuracy = কত ভাগ prediction ঠিক (0 থেকে 1, একটা float)

Loop ছাড়া।

solution.py

বাস্তবে কোথায় ব্যবহার হয়?

Confusion matrix — কোন class কোন class-এর সাথে গুলিয়ে যাচ্ছে, model evaluation-এর সবচেয়ে কাজের table:

main.py

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।