মূল content-এ যাও

Python for AI/Project: Student Performance Analysis/Lesson 56

Project: Insights ও Visualization

NGO-র পাঁচটা প্রশ্নের উত্তর data থেকে — groupby আর correlation দিয়ে সংখ্যা, Matplotlib দিয়ে একটা report figure, সিদ্ধান্ত আর সীমাবদ্ধতা লেখা, আর project-টা portfolio-তে রাখা।

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

সহজ ভাষায়

পরিষ্কার data হাতে। এবার প্রথম lesson-এর পাঁচটা প্রশ্নের উত্তর — সংখ্যা দিয়ে, graph দিয়ে, আর শেষে NGO-র জন্য সিদ্ধান্ত।

প্রশ্ন ১: সামগ্রিক ফলাফল

main.py

প্রায় ৭৮% pass করেছে — মানে প্রতি ৫ জনে ১ জন fail। Math-এ গড় সবচেয়ে কম।

প্রশ্ন ২: পড়ার সময়

main.py

r ≈ ০.৬ — শক্তিশালী positive সম্পর্ক। আর band অনুযায়ী দেখলে আরও স্পষ্ট: সপ্তাহে ৫ ঘণ্টার কম পড়া student-দের গড় ২০+ ঘণ্টা পড়াদের চেয়ে অনেক কম।

প্রশ্ন ৩: Private tutor

main.py

Tutor থাকলে গড় প্রায় ৫ নম্বর বেশি। কিন্তু সাবধান — এটা কারণ প্রমাণ করে না। Tutor রাখা পরিবারগুলো হয়তো অন্যভাবেও আলাদা, আর সেই পার্থক্যই হয়তো ফলাফলের আসল কারণ। একে বলে confounding।

Crosstab-টা একটা সম্ভাব্য confounder যাচাই করছে: internet। দেখা যাচ্ছে tutor থাকা আর না থাকা — দুই দলেই প্রায় সমান ভাগের (৬৫–৬৭%) বাসায় internet আছে। তাই internet এই পার্থক্যের ব্যাখ্যা না। কিন্তু যেসব জিনিস আমরা মাপিনি — যেমন পরিবারের আয় — সেগুলো এখনো confounder হতে পারে। Report-এ তাই লিখতে হবে: "tutor-এর সাথে ভালো ফলাফলের সম্পর্ক আছে" — "tutor ফলাফল বাড়ায়" না।

প্রশ্ন ৪: বাবা-মায়ের শিক্ষা

main.py

একটা স্পষ্ট ধাপ: none থেকে higher-এ গড় প্রায় ১০ নম্বর বেশি। এটা NGO-র জন্য গুরুত্বপূর্ণ — যেসব পরিবারে বাবা-মা পড়াশোনায় সাহায্য করতে পারেন না, সেখানেই বাইরের সহায়তার প্রয়োজন সবচেয়ে বেশি।

প্রশ্ন ৫: District

main.py

সবচেয়ে কম আর বেশির পার্থক্য মাত্র ~২ নম্বর, আর কিছু district-এ মাত্র ২০-৩০ জন student। এটা সম্ভবত এলোমেলো তারতম্য — কোনো district-কে "পিছিয়ে পড়া" বলার মতো প্রমাণ নেই। "কোনো বড় পার্থক্য পাইনি"-ও একটা মূল্যবান ফলাফল।

Exercise

Exercise

প্রশ্নগুলোর উত্তর

+20 XP

students_clean.csv load করে NGO-র প্রশ্নের উত্তর সংখ্যায় বের করো:

  • pass_rate — কত ভাগ pass করেছে, 3 ঘর দশমিকে round
  • hours_corr — study_hours আর avg_score-এর correlation, 2 ঘর দশমিকে round
  • tutor_gap — tutor আছে এমনদের গড় avg_score বিয়োগ নেই এমনদের, 1 ঘর দশমিকে round
  • edu_means — parent_education অনুযায়ী গড় avg_score (1 ঘর দশমিকে round), dict
  • weakest_district — সবচেয়ে কম গড় avg_score-এর district
solution.py

Quiz

  1. Q1Tutor থাকা student-রা গড়ে ৫ নম্বর বেশি পায়। এখান থেকে কি বলা যায় tutor রাখলেই ফলাফল ৫ নম্বর বাড়বে?
  2. Q2District-ভিত্তিক গড়ে সবচেয়ে কম আর বেশির পার্থক্য মাত্র ~২ নম্বর। NGO-কে কী বলবে?
  3. Q3Portfolio project-এর README-তে সবচেয়ে গুরুত্বপূর্ণ কী?
0/3 answered

Challenge

Challenge

Report figure

+50 XP

NGO-র জন্য একটা report figure। report_figure(df) function একটা 2×2 figure return করবে (layout="constrained"):

  • উপরে-বামে: avg_score-এর histogram, 20 bin, সাথে 40-এ একটা খাড়া line (pass mark) — title "Average score"
  • উপরে-ডানে: study_hours বনাম avg_score scatter — title "Study hours vs score"
  • নিচে-বামে: parent_education অনুযায়ী গড় avg_score-এর bar, এই ক্রমে: none, primary, secondary, higher — title "Parent education"
  • নিচে-ডানে: tutor "no" আর "yes" (এই ক্রমে) দলের pass rate-এর bar — title "Pass rate by tutor"
solution.py

সিদ্ধান্ত: NGO-র জন্য সারাংশ

একটা analysis-এর শেষ ধাপ কোনো graph না — সিদ্ধান্ত, এমন ভাষায় যা non-technical মানুষ বুঝবেন:

মূল ফলাফল (৩৯৭ জন SSC পরীক্ষার্থী)

1. প্রতি ৫ জনে ১ জন fail করছে (pass rate ~৭৮%)।
2. সাপ্তাহিক পড়ার সময় ফলাফলের সবচেয়ে শক্তিশালী সূচক (r ≈ 0.6)।
3. যেসব পরিবারে বাবা-মায়ের আনুষ্ঠানিক শিক্ষা নেই, সেখানকার student-রা
   গড়ে ~১০ নম্বর পিছিয়ে।
4. Private tutor থাকা student-রা গড়ে ~৫ নম্বর বেশি পায় — তবে এটা
   পরিবারের অবস্থার সাথেও জড়িত হতে পারে।
5. District-এর মধ্যে উল্লেখযোগ্য পার্থক্য পাওয়া যায়নি।

সুপারিশ: স্বল্পশিক্ষিত পরিবারের student-দের জন্য structured study
session (যেমন স্কুলের পর guided study hour) একটা pilot program হিসেবে
চালানো, আর ফলাফল মেপে দেখা — যাতে কারণ-ফলাফল যাচাই করা যায়।

সীমাবদ্ধতা: এটা observational data, তাই কারণ প্রমাণ করে না। Study hours
self-reported। ~২% নম্বর median দিয়ে পূরণ করা।

শেষ সুপারিশটা খেয়াল করো — data যেখানে নিশ্চিত না, সেখানে "পরীক্ষা করে দেখো" বলা সৎ আর পেশাদার।

Portfolio-তে রাখো

এই project-টা তোমার প্রথম portfolio item হতে পারে। GitHub-এ একটা repository:

student-performance-analysis/
  README.md              <- সবচেয়ে গুরুত্বপূর্ণ
  data/students.csv
  notebooks/analysis.ipynb
  src/clean.py           <- তোমার clean() function
  figures/report.png     <- fig.savefig("figures/report.png", dpi=200)
  requirements.txt

README-তে চারটা অংশ: প্রশ্ন (NGO কী জানতে চায়), পদ্ধতি (cleaning-এর নিয়ম আর কেন), ফলাফল (report figure + ৫টা মূল কথা), সীমাবদ্ধতা। Recruiter ২ মিনিটে দেখে — code-এর চেয়ে বেশি দেখে তুমি কীভাবে চিন্তা করো।

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

তুমি এইমাত্র একজন data analyst-এর পুরো কাজের চক্র শেষ করলে:

প্রশ্ন -> data -> quality check -> cleaning -> analysis -> visualization -> সিদ্ধান্ত

এই চক্রটাই ML-এর ভিত্তি। পরের ধাপে প্রশ্নটা বদলাবে: "কোন বিষয় ফলাফলকে প্রভাবিত করে?" থেকে "এই নতুন student কি fail করার ঝুঁকিতে আছে?" — অর্থাৎ prediction। তখন এই একই পরিষ্কার data দিয়ে একটা classification model train করবে, যাতে ঝুঁকিতে থাকা student-দের আগে থেকে চিহ্নিত করে সাহায্য করা যায়।

Interview প্রশ্ন

  • Beginner: তোমার project-এর মূল ফলাফল ৩০ সেকেন্ডে বলো।
  • Intermediate: Correlation থেকে causation কেন বলা যায় না? এই project-এ একটা confounding variable-এর উদাহরণ দাও।
  • Advanced: NGO যদি জানতে চায় tutoring program সত্যিই কাজ করে কিনা, কীভাবে experiment design করবে? (randomized controlled trial, A/B test, sample size)

এরপর কী?

🎉 অভিনন্দন — তুমি Python for AI path সম্পূর্ণ করেছো!

৫৬টা lesson, ৯টা module — variables থেকে শুরু করে NumPy, Pandas, Matplotlib, আর একটা সম্পূর্ণ data analysis project। তুমি এখন Python-এ data নিয়ে আত্মবিশ্বাসের সাথে কাজ করতে পারো।

AI Engineer হওয়ার পরের ধাপ: Mathematics for AI (linear algebra, probability, gradient — ছবি আর intuition দিয়ে), তারপর Machine Learning — যেখানে এই project-এর data দিয়েই তোমার প্রথম prediction model বানাবে।