মূল content-এ যাও

Python for AI/Matplotlib/Lesson 52

Histogram

একটা variable-এর মান কীভাবে ছড়ানো — histogram আর bins, distribution-এর আকার (skew), দুটো দলের তুলনা, আর category-র জন্য bar chart।

সময়
22 মিনিট
Exercise
1
Challenge
1
Quiz
3 প্রশ্ন

সহজ ভাষায়

৩০০ জন student-এর নম্বর — গড় ৬২। কিন্তু বেশিরভাগ কি ৬০-এর আশেপাশে, নাকি অর্ধেক ৯০ আর অর্ধেক ৩০? গড় এটা বলে না। Histogram বলে:

main.py

পুরো range-কে ভাগে ভাগ করা হয় (bins: 0–10, 10–20, …), প্রতিটা ভাগে কতজন পড়ে, সেটাই bar-এর উচ্চতা।

কেন দরকার?

  • Data বোঝা — একটা feature-এর মান কোথায় বেশি, কতটা ছড়ানো, outlier আছে কিনা
  • Transformation বাছাই — skewed data-য় log লাগবে কিনা
  • দুই দলের তুলনা — fraud আর normal transaction-এর amount কতটা আলাদা
  • Model-এর ভুলের distribution — residual-গুলো 0-এর চারপাশে সমানভাবে ছড়ানো কিনা

Distribution-এর আকার

main.py
আকারচেনার উপায়করণীয়
Normalঘণ্টার মতো, mean ≈ medianসাধারণত কিছু লাগে না
Right-skewedডানে লম্বা লেজ, mean > mediannp.log1p transform
Bimodalদুটো চূড়াহয়তো দুটো আলাদা দল মিশে আছে — খুঁজে বের করো কেন

দুটো দলের তুলনা

main.py

দুটো কৌশল: একই bins (তাহলে তুলনা ন্যায্য), আর density=True — fraud মাত্র ১৫০টা, normal ৩০০০টা; density না দিলে fraud-এর bar প্রায় দেখাই যেত না।

Bar chart: category-র জন্য

সংখ্যা না, category হলে histogram না, bar chart:

main.py

Category-র নাম লম্বা হলে barh (আড়াআড়ি) পড়তে সহজ। আর সবসময় sort করো — এলোমেলো ক্রমের bar chart তুলনা করা কঠিন।

Exercise

Exercise

নম্বরের histogram

+20 XP

fig, ax = plt.subplots() দিয়ে marks-এর একটা histogram আঁকো, 10টা bin, 0 থেকে 100 পর্যন্ত (range=(0, 100))।

তারপর গড় নম্বরে একটা খাড়া line (ax.axvline)। Title: "Exam marks"।

solution.py

Quiz

  1. Q1Histogram আর bar chart-এর পার্থক্য কী?
  2. Q2Salary-র histogram-এ বেশিরভাগ বাম দিকে, ডানে লম্বা লেজ — কী বলা যায়?
  3. Q3Bin সংখ্যা খুব কম (যেমন ২টা) হলে কী সমস্যা?
0/3 answered

Challenge

Challenge

Category-র sorted bar chart

+50 XP

Customer complaint-এর category দেওয়া আছে। fig, ax = plt.subplots() দিয়ে একটা bar chart বানাও:

  • প্রতিটা category একটা bar, উচ্চতা = কতবার এসেছে
  • Bar-গুলো বেশি থেকে কম ক্রমে (বাম থেকে ডানে)
  • প্রতিটা bar-এর ওপরে তার সংখ্যা লেখা (ax.bar_label)
solution.py

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

Log transform — skewed feature-কে model-এর জন্য উপযোগী করা। Linear model আর neural network সাধারণত সমানভাবে ছড়ানো data-য় ভালো কাজ করে:

main.py

একটা লাইন (np.log1p) — আর বিশাল লেজওয়ালা data হয়ে গেল প্রায় ঘণ্টার মতো। House price, income, ad click — অনেক Kaggle competition-এ target-এর ওপরেই এই transform করা হয়।

Interview প্রশ্ন

  • Beginner: Histogram কী? Bar chart থেকে কোথায় আলাদা?
  • Intermediate: Skewed distribution কী? Mean আর median-এর মধ্যে কোনটা তখন বেশি তথ্যবহুল?
  • Advanced: Feature-এ log transform কেন সাহায্য করে? Target-এ log transform করলে prediction-এর পর কী করতে হয়? (np.expm1 দিয়ে ফেরত আনা, আর এতে কী ধরনের error কমানো হচ্ছে তা বোঝা।)

এরপর কী?

এই module-এ বারবার plt.subplots(1, 3) দিয়ে একসাথে কয়েকটা graph এঁকেছি। এটা ঠিকমতো শেখার পালা — একটা পুরো dashboard। পরের lesson: Subplots।