Python for AI/Matplotlib/Lesson 50
Line Plot
fig, ax = plt.subplots() দিয়ে শুরু — line plot, label, title, legend, grid, marker; আর প্রতিটা ML engineer-এর সবচেয়ে দেখা graph: training আর validation loss curve, যেখানে overfitting চোখে পড়ে।
- সময়
- 22 মিনিট
- Exercise
- 1
- Challenge
- 1
- Quiz
- 3 প্রশ্ন
সহজ ভাষায়
সংখ্যার table দেখে pattern বোঝা কঠিন। একটা graph এক নজরে বলে দেয় কী হচ্ছে। Matplotlib হলো Python-এর সবচেয়ে মৌলিক graph library — Pandas আর Seaborn-এর plotting-ও ভেতরে এটাই।
fig— পুরো ছবিax— ছবির ভেতরের plot-এর জায়গা (axes)ax.plot(x, y)— line আঁকে
Graph-এর লেখা English-এ রাখো। Matplotlib-এর default font-এ বাংলা অক্ষর নেই, আর বাংলা যুক্তাক্ষর ঠিকমতো জোড়া দিতেও পারে না। আন্তর্জাতিক convention-ও তাই — report আর paper-এর graph সাধারণত English-এ।
কেন দরকার?
- Training monitor — loss কমছে কিনা, overfitting হচ্ছে কিনা (আজকের মূল উদাহরণ)
- Data exploration — model বানানোর আগে data বোঝা
- ফলাফল বোঝানো — boss, client বা paper-এ একটা ভালো graph হাজার সংখ্যার চেয়ে কার্যকর
দুটো style: plt. বনাম ax.
অনলাইনে দুই ধরনের code দেখবে:
দ্বিতীয়টা (fig, ax) ব্যবহার করো — একাধিক graph-এ কোনটায় আঁকছো স্পষ্ট থাকে। লক্ষ্য করো নাম: plt.title() কিন্তু ax.set_title()।
Line-কে সাজানো
| Parameter | উদাহরণ |
|---|---|
color | "red", "#059669" |
linestyle | "-", "--", ":" |
linewidth | 2 |
marker | "o", "s", "^" |
label | legend-এর জন্য নাম |
alpha | স্বচ্ছতা 0–1 |
Math intuition: overfitting দেখা
শুরুতে: দুটোই কমছে -> model শিখছে (underfitting থেকে বেরিয়ে আসছে)
মাঝখানে: validation সবচেয়ে কম -> সেরা model, এখানেই থামা উচিত
শেষে: train কমছে, val বাড়ছে -> overfitting: training data মুখস্থ করছে
এই graph-টা চিনতে পারা ML-এর সবচেয়ে মৌলিক skill-গুলোর একটা। Interview-তে প্রায় নিশ্চিত প্রশ্ন।
Exercise
Exercise
Loss curve আঁকো
একটা model-এর ১০ epoch-এর training আর validation loss দেওয়া আছে। fig, ax = plt.subplots() দিয়ে একটা graph বানাও যেখানে:
- দুটো line —
label="train"আরlabel="validation" - x-axis label
"epoch", y-axis label"loss" - title
"Training curve" - একটা legend
Quiz
Challenge
Challenge
সেরা epoch চিহ্নিত করো
Validation loss যেখানে সবচেয়ে কম, সেখানেই model সবচেয়ে ভালো — তার পরে overfitting শুরু। এটা early stopping-এর মূল ধারণা।
best_epoch— যে epoch-এ val_loss সবচেয়ে কম (epoch নম্বর, index না)fig, ax = plt.subplots()দিয়ে val_loss-এর line আঁকোbest_epoch-এ একটা খাড়া dashed line (ax.axvline(..., linestyle="--"))- Title:
f"Best epoch: {best_epoch}"
best_epoch data থেকে হিসাব করো, হাতে লিখো না।
বাস্তবে কোথায় ব্যবহার হয়?
Learning rate তুলনা — একই model, তিনটা আলাদা learning rate। কোনটা বেছে নেবে?
- বেশি — loss লাফালাফি করে, কখনো স্থির হয় না
- কম — খুব ধীরে নামে, ৩০ epoch-এও শেষ হয় না
- ঠিকঠাক — দ্রুত নামে, তারপর স্থির
Weights & Biases, TensorBoard, MLflow — সব experiment tracking tool মূলত এরকম line plot দেখায়।
Interview প্রশ্ন
- Beginner: Training আর validation loss-এর graph দেখে overfitting কীভাবে চিনবে?
- Intermediate: Underfitting দেখতে কেমন? Overfitting আর underfitting-এর সমাধান কী কী?
- Advanced: Validation loss বাড়ছে কিন্তু validation accuracy-ও বাড়ছে — এটা কীভাবে সম্ভব? (Model আত্মবিশ্বাসী ভুল করছে — calibration সমস্যা।)
এরপর কী?
Line plot দেখায় সময়ের সাথে পরিবর্তন। কিন্তু দুটো জিনিসের মধ্যে সম্পর্ক — বাড়ির আয়তন বনাম দাম? পরের lesson: Scatter Plot।