Python for AI/NumPy/Lesson 33
NumPy কেন?
Python list ধীর কেন, আর NumPy array কীভাবে একই কাজ ১০-১০০ গুণ দ্রুত করে — vectorization, একই type-এর data, আর কেন সব ML library এর ওপর দাঁড়িয়ে।
- সময়
- 20 মিনিট
- Exercise
- 1
- Challenge
- 1
- Quiz
- 3 প্রশ্ন
সহজ ভাষায়
NumPy (Numerical Python) হলো সংখ্যা নিয়ে দ্রুত কাজ করার library। এর মূল জিনিস ndarray — list-এর মতো, কিন্তু:
- সব item একই type (সব int, বা সব float)
- হিসাব হয় পুরো array-এর ওপর একবারে — loop লিখতে হয় না
তিন লাইনে যা করলাম, list দিয়ে করতে loop লাগত।
কেন দরকার?
সব ML library NumPy-র ওপর দাঁড়িয়ে:
- Pandas DataFrame-এর ভেতরে NumPy array
- scikit-learn-এর
fit(X, y)-এ X আর y NumPy array - PyTorch tensor প্রায় হুবহু NumPy-র মতো আচরণ করে (
.numpy()দিয়ে রূপান্তরও হয়) - একটা ছবি = সংখ্যার একটা 3D array (height × width × রং)
NumPy না জানলে এগুলোর কোনোটাই ঠিকমতো বোঝা যাবে না।
Visual intuition: list বনাম array
Python list: [ ptr ][ ptr ][ ptr ][ ptr ] প্রতিটা item আলাদা object,
| | | | memory-র এখানে-ওখানে ছড়ানো
120 250 80 1500
NumPy array: [ 120 | 250 | 80 | 1500 ] সব সংখ্যা পাশাপাশি, একই type
NumPy-তে সংখ্যাগুলো পাশাপাশি থাকে, তাই CPU এক টানে পড়ে ফেলে। আর prices * 1.15-এর ভেতরের loop চলে compiled C code-এ।
গতির পার্থক্য — নিজে মেপে দেখো
তোমার computer আর browser অনুযায়ী সংখ্যা আলাদা হবে, কিন্তু পার্থক্যটা বিশাল। ML-এ লাখ লাখ সংখ্যা নিয়ে কাজ — এই পার্থক্যই ঠিক করে training ১ মিনিটে হবে নাকি ১ ঘণ্টায়।
Vectorization
Loop-এর বদলে পুরো array-এর ওপর operation লেখাকে বলে vectorization। এটা NumPy-র মূল চিন্তাধারা:
শেষ লাইনটা দেখো — celsius[hot] শুধু সেই মানগুলো দিল যেখানে শর্ত True। এই "boolean indexing" পরে বিস্তারিত দেখবো।
সাবধান: list আর array-এর *
List-এ * আর + মানে জোড়া লাগানো; array-তে গাণিতিক হিসাব। নতুনদের সবচেয়ে common গোলমাল।
একই type: dtype
একটা float থাকলে সব float; একটা string থাকলে সব string! CSV থেকে data আনার পর dtype চেক করা ভালো অভ্যাস।
Exercise
Exercise
Loop ছাড়া VAT
prices list-কে NumPy array বানাও, তারপর প্রতিটা দামে ১৫% VAT যোগ করে with_vat array বানাও।
কোনো loop বা list comprehension ছাড়া — পুরো array-এর ওপর একবারে হিসাব করো।
Quiz
Challenge
Challenge
Mean Squared Error
Regression model কতটা ভুল করছে মাপার সবচেয়ে common উপায় Mean Squared Error:
MSE = (প্রতিটা ভুলের বর্গ)-এর গড় = mean((y_true − y_pred)²)
mse(y_true, y_pred) function লেখো — NumPy দিয়ে, loop ছাড়া। Input list বা array দুটোই হতে পারে। একটা সাধারণ float return করবে।
বাস্তবে কোথায় ব্যবহার হয়?
তুমি challenge-এ যে MSE লিখলে, সেটা linear regression-এর loss function — training-এর সময় model এই সংখ্যাটা ছোট করার চেষ্টা করে। scikit-learn-এ mean_squared_error, PyTorch-এ nn.MSELoss — ভেতরে ঠিক এই এক লাইন।
MSE যত কম, model তত ভালো।
Interview প্রশ্ন
- Beginner: NumPy array আর Python list-এর পার্থক্য কী?
- Intermediate: Vectorization কী, আর কেন এটা দ্রুত?
- Advanced: MSE-তে ভুলের বর্গ নেওয়া হয় কেন, absolute মান না নিয়ে? Outlier-এর ওপর এর কী প্রভাব? (বর্গ বড় ভুলকে অনেক বেশি শাস্তি দেয় — outlier-এ sensitive।)
এরপর কী?
এখন পর্যন্ত শুধু list থেকে array বানিয়েছি। কিন্তু শূন্যে ভরা array, নির্দিষ্ট range, বা matrix বানাতে আরও অনেক উপায় আছে — আর shape ধারণাটা বুঝতে হবে। পরের lesson: Arrays তৈরি।