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-র জন্য সিদ্ধান্ত।
প্রশ্ন ১: সামগ্রিক ফলাফল
প্রায় ৭৮% pass করেছে — মানে প্রতি ৫ জনে ১ জন fail। Math-এ গড় সবচেয়ে কম।
প্রশ্ন ২: পড়ার সময়
r ≈ ০.৬ — শক্তিশালী positive সম্পর্ক। আর band অনুযায়ী দেখলে আরও স্পষ্ট: সপ্তাহে ৫ ঘণ্টার কম পড়া student-দের গড় ২০+ ঘণ্টা পড়াদের চেয়ে অনেক কম।
প্রশ্ন ৩: Private tutor
Tutor থাকলে গড় প্রায় ৫ নম্বর বেশি। কিন্তু সাবধান — এটা কারণ প্রমাণ করে না। Tutor রাখা পরিবারগুলো হয়তো অন্যভাবেও আলাদা, আর সেই পার্থক্যই হয়তো ফলাফলের আসল কারণ। একে বলে confounding।
Crosstab-টা একটা সম্ভাব্য confounder যাচাই করছে: internet। দেখা যাচ্ছে tutor থাকা আর না থাকা — দুই দলেই প্রায় সমান ভাগের (৬৫–৬৭%) বাসায় internet আছে। তাই internet এই পার্থক্যের ব্যাখ্যা না। কিন্তু যেসব জিনিস আমরা মাপিনি — যেমন পরিবারের আয় — সেগুলো এখনো confounder হতে পারে। Report-এ তাই লিখতে হবে: "tutor-এর সাথে ভালো ফলাফলের সম্পর্ক আছে" — "tutor ফলাফল বাড়ায়" না।
প্রশ্ন ৪: বাবা-মায়ের শিক্ষা
একটা স্পষ্ট ধাপ: none থেকে higher-এ গড় প্রায় ১০ নম্বর বেশি। এটা NGO-র জন্য গুরুত্বপূর্ণ — যেসব পরিবারে বাবা-মা পড়াশোনায় সাহায্য করতে পারেন না, সেখানেই বাইরের সহায়তার প্রয়োজন সবচেয়ে বেশি।
প্রশ্ন ৫: District
সবচেয়ে কম আর বেশির পার্থক্য মাত্র ~২ নম্বর, আর কিছু district-এ মাত্র ২০-৩০ জন student। এটা সম্ভবত এলোমেলো তারতম্য — কোনো district-কে "পিছিয়ে পড়া" বলার মতো প্রমাণ নেই। "কোনো বড় পার্থক্য পাইনি"-ও একটা মূল্যবান ফলাফল।
Exercise
Exercise
প্রশ্নগুলোর উত্তর
students_clean.csv load করে NGO-র প্রশ্নের উত্তর সংখ্যায় বের করো:
pass_rate— কত ভাগ pass করেছে, 3 ঘর দশমিকে roundhours_corr—study_hoursআরavg_score-এর correlation, 2 ঘর দশমিকে roundtutor_gap— tutor আছে এমনদের গড়avg_scoreবিয়োগ নেই এমনদের, 1 ঘর দশমিকে roundedu_means—parent_educationঅনুযায়ী গড়avg_score(1 ঘর দশমিকে round), dictweakest_district— সবচেয়ে কম গড়avg_score-এর district
Quiz
Challenge
Challenge
Report figure
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_scorescatter — 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"
সিদ্ধান্ত: 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 বানাবে।