ভূমিকা
আমাদের মেশিন লার্নিং মডেল তৈরি এবং সেভ করার পর, এখন আমাদের এমন একটি মাধ্যম প্রয়োজন যা ব্যবহারকারীর ইনপুট গ্রহণ করবে এবং মডেলের মাধ্যমে দাম প্রেডিক্ট (পূর্বাভাস) করবে। এই ভিডিওতে আমরা পাইথন ফ্লাস্ক (Flask) ব্যবহার করে একটি সার্ভার তৈরি করব, যা একটি ব্যাক-এন্ড (Back-end) হিসেবে কাজ করবে। এটি আমাদের ওয়েব অ্যাপ্লিকেশনের সাথে যুক্ত হবে এবং রিয়েল এস্টেটের দাম প্রেডিক্ট করতে সাহায্য করবে।
১. ফ্লাস্ক সার্ভার সেটআপ
ভিডিও লিঙ্ক: [00:00]
এখানে আমরা আমাদের সার্ভারের মূল কাঠামো তৈরি করব। ফ্লাস্ক হলো পাইথনের একটি মাইক্রো-ফ্রেমওয়ার্ক, যা দিয়ে খুব সহজেই ওয়েব সার্ভিস বা এপিআই (API) তৈরি করা যায়।
-
ধাপ: একটি ফোল্ডার তৈরি করুন যেখানে আপনার মডেলের ফাইল এবং ডেটা থাকবে।
-
কোড:
Python
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/hello')
def hello():
return "Hi"
if __name__ == "__main__":
app.run()
- ব্যাখ্যা: এখানে
Flask(__name__)দিয়ে অ্যাপটি শুরু করা হয়েছে।@app.routeদিয়ে একটি নির্দিষ্ট পাথ বা লিঙ্ক তৈরি করা হয়েছে, যা হিট করলে "Hi" মেসেজটি দেখাবে।
২. ইউটিল (Util) ফাইল এবং লোকেশন লোড করা
ভিডিও লিঙ্ক: [06:05]
সার্ভারের কোড পরিষ্কার রাখার জন্য আমরা সব মূল কাজ একটি আলাদা ফাইলে রাখব, যার নাম util.py দেওয়া হয়েছে। এই ফাইলটি আমাদের সেভ করা মডেল এবং ডেটা লোড করবে।
-
কেন আলাদা ফাইল? সার্ভার শুধু রিকোয়েস্ট এবং রেসপন্স হ্যান্ডেল করবে, আর
util.pyআসল ক্যালকুলেশন বা কাজের হিসাব-নিকাশ করবে। একে বলে মডুলার কোড। -
কোড:
Python
import json
import pickle
__locations = None
__data_columns = None
__model = None
def load_saved_artifacts():
global __data_columns
global __locations
global __model
with open("./artifacts/columns.json", "r") as f:
__data_columns = json.load(f)['data_columns']
__locations = __data_columns[3:] # প্রথম ৩টি কলাম লোকেশন নয়
with open("./artifacts/banglore_home_prices_model.pickle", "rb") as f:
__model = pickle.load(f)
-
সহজ ব্যাখ্যা:
-
Artifacts (আর্টিফ্যাক্টস): এটি বলতে বোঝানো হয়েছে আমাদের আগে থেকে সেভ করা ফাইলগুলো (যেমন- মডেল এবং JSON ফাইল)।
-
Global Variable: এমন ভেরিয়েবল যা কোডের যেকোনো জায়গা থেকে অ্যাক্সেস করা যায়।
-
Pickle: এটি পাইথনের একটি লাইব্রেরি যা দিয়ে অবজেক্ট বা মডেলকে সেভ করে রাখা যায় এবং পরে লোড করা যায়।
-
৩. দাম প্রেডিক্ট করার ফাংশন
ভিডিও লিঙ্ক: [11:44]
ইউজার যখন স্কয়ার ফিট, বেডরুম (BHK), এবং বাথরুমের তথ্য দেবে, এই ফাংশনটি মডেল ব্যবহার করে দাম বের করে আনবে।
-
কাজ: এটি ইনপুটগুলো নিয়ে একটি এরে (Array) তৈরি করে মডেলে পাঠায়। যদি কোনো লোকেশন না পাওয়া যায়, তবে সেটি হ্যান্ডেল করার জন্য
try-exceptব্লক ব্যবহার করা হয়েছে। -
সহজ ব্যাখ্যা: ওয়ান হট এনকোডিং (One-Hot Encoding) ব্যবহার করা হয়েছে যাতে ক্যাটাগরিক্যাল ডেটা (যেমন- লোকেশনের নাম) সংখ্যায় রূপান্তর করা যায়। মডেল শুধু সংখ্যা বোঝে, নাম নয়।
৪. পোস্ট (POST) মেথড ব্যবহার করে সার্ভার টেস্ট
ভিডিও লিঙ্ক: [17:08]
আমরা 'পোস্টম্যান' (Postman) টুল ব্যবহার করে আমাদের সার্ভার টেস্ট করব। পোস্ট রিকোয়েস্ট ব্যবহার করা হয় যখন সার্ভারে কোনো তথ্য পাঠিয়ে তার বিপরীতে উত্তর পেতে হয়।
- কীভাবে কাজ করে: ইউজার ইউআই (UI) থেকে যে তথ্য দেবে তা
request.formএর মাধ্যমে সার্ভারে আসবে। সার্ভার সেই তথ্য প্রসেস করেget_estimated_priceফাংশনের মাধ্যমে দাম রিটার্ন করবে।
বিশ্লেষণ ও আমার মতামত
ভিডিওটির নির্মাতা খুব চমৎকারভাবে একটি এন্ড-টু-এন্ড (End-to-End) প্রজেক্ট দেখাচ্ছেন। এটি একজন বিগিনারের জন্য শেখার বড় সুযোগ।
-
বাস্তবতা: বাস্তবে সার্ভার তৈরি করার সময় নিরাপত্তা (Security) এবং ডেটা ভ্যালিডেশন অনেক গুরুত্বপূর্ণ। এখানে যে কোড দেওয়া হয়েছে তা শেখার জন্য সেরা, তবে প্রোডাকশন লেভেলে ডেটা স্যানিটাইজেশন (Data Sanitization) করা জরুরি।
-
বিকল্প: আপনি চাইলে ফ্লাস্কের বদলে 'FastAPI' ব্যবহার করতে পারেন, যা বর্তমান সময়ে অনেক দ্রুত এবং আধুনিক।
-
পরামর্শ: প্রজেক্টটি করার সময় ফোল্ডার স্ট্রাকচার ঠিক রাখা খুবই গুরুত্বপূর্ণ।
artifactsফোল্ডার এবংserver.pyযেন সঠিকভাবে একে অপরের সাথে লিঙ্ক থাকে তা বারবার চেক করুন।
রেফারেন্স: http://www.youtube.com/watch?v=Q5JyawS8f5Q
[
Machine Learning & Data Science Project - 6 : Python Flask Server (Real Estate Price Prediction)
codebasics · 211K views
](http://www.youtube.com/watch?v=Q5JyawS8f5Q)

মন্তব্যসমূহ
একটি মন্তব্য পোস্ট করুন
আপনার সমস্যাটি কমেন্ট করে আমাদের জানান :-d