সরাসরি প্রধান সামগ্রীতে চলে যান

রিয়েল এস্টেট প্রাইস প্রেডিকশন: পাইথন ফ্লাস্ক সার্ভার তৈরি

ভূমিকা

আমাদের মেশিন লার্নিং মডেল তৈরি এবং সেভ করার পর, এখন আমাদের এমন একটি মাধ্যম প্রয়োজন যা ব্যবহারকারীর ইনপুট গ্রহণ করবে এবং মডেলের মাধ্যমে দাম প্রেডিক্ট (পূর্বাভাস) করবে। এই ভিডিওতে আমরা পাইথন ফ্লাস্ক (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)

মন্তব্যসমূহ

এই ব্লগটি থেকে জনপ্রিয় পোস্টগুলি

সিজ্জিন (Sijjin) vs ইল্লিয়িন (Illiyin) পার্থক্য Difference

Sijjin (سِجِّين) এবং Illiyin (عِلِّيِّين) —এ দুটি শব্দ কুরআনে এসেছে এবং দুটোই মানুষের আমলনামা সংরক্ষণ সম্পর্কিত স্থানকে নির্দেশ করে। ১. সিজ্জিন (Sijjin) সিজ্জিন হলো পাপীদের (কাফের, মুনাফিক ও দুরাচারীদের) আমলনামা সংরক্ষণের স্থান। এটি সাত তলদেশের নীচে এক কারাগার বা অন্ধকার জগতে অবস্থিত বলে উল্লেখ রয়েছে। সূরা আল-মুতাফফিফীন (৮৩:৭-৯) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْفُجَّارِ لَفِي سِجِّينٍ ۝ وَمَا أَدْرَاكَ مَا سِجِّينٌ ۝ كِتَابٌ مَرْقُومٌ" অর্থ: "না, পাপীদের আমলনামা সিজ্জিনে সংরক্ষিত। তুমি কি জানো, সিজ্জিন কী? এটি এক লিখিত দলিল।" সিজ্জিনকে একটি কারাগার, সংকীর্ণ স্থান, বা নিচের স্তরে অবস্থিত এক অন্ধকার দুনিয়া হিসেবে ব্যাখ্যা করা হয়। ২. ইল্লিয়িন (Illiyin) ইল্লিয়িন হলো সৎকর্মশীলদের (মুমিন ও নেককারদের) আমলনামা সংরক্ষণের স্থান । এটি সপ্তম আসমানের ওপরে সংরক্ষিত এক সম্মানিত স্থান। সূরা আল-মুতাফফিফীন (৮৩:১৮-২১) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْأَبْرَارِ لَفِي عِلِّيِّينَ ۝ وَمَا أَدْرَاكَ مَا عِلِّيُّونَ ۝ كِتَابٌ مَرْقُومٌ ۝ يَش...

তারাবিহ সমগ্র - প্রথম আলো

রামাদান ২০২৪ উপলক্ষে প্রথম আলোর নিয়মিত আয়োজন - খতমে তারাবিহ'র সূরা গুলো নিয়ে সংক্ষিপ্ত আলোচনা'র লিংক  নিচে দেওয়া হলো।  লিংকে ক্লিক করলেই আপনাকে আলোচনা তে নিয়ে যাবে। তারাবিহ: ১ | একটি খুন ও গাভি নিয়ে বনি ইসরাইলের বাড়াবাড়ি তারাবিহ: ২ | নারীর মর্যাদা ও অধিকার এবং অলৌকিক তিন ঘটনা তারাবিহ: ৩ | যে ১৪ নারীকে বিয়ে করা হারাম তারাবিতে: ১২ | মহানবী (সা.)–এর আকাশভ্রমণ এবং আসহাবে কাহাফের কাহিনি

রেডমি নোট ৯ এর বিস্তারিত | Redmi Note 9 in Bangla

৩০ এপ্রিল, ২০২০ এ শাওমির ঘোষনা আসে এই ফোনটি নিয়ে। কিন্তু ফোনটি মার্কেটে আসে মে মাসের শেষের দিকে৷ করোনার কারনে ফোনটি বাংলাদেশে আসতে আরো সময় নেয়। বর্তমানে বাংলাদেশে আন অফিশিয়াল ভাবে ফোনটি পাওয়া যাচ্ছে৷ বাংলাদেশে অফিশিয়াল ভাবে এখনো ফোনটি আসার তথ্য নেয়৷ চলুন ফোনটি নিয়ে বিস্তারিত আলোচনা করা যাক। শাওমি নোট সিরিজের ফোন বের করে এদের রেডমি নামে সাব ব্যান্ড৷ এদের কাজ হল এই নোট সিরিজ নিয়ে কাজ করা৷ প্রতিবছর নোট সিরিজের ১/২ টা ফোন বাজারে আসে। সাথে সেই ফোন গুলার বিভিন্ন ভার্সন (যেমন - র‍্যাম ও রমের ভিত্তিতে) বাজারে আসে। এই বছরও তারা রেডমি সিরিজের নোট ৯ বাজারে আনে। এই বছর হয়তো এই সিরিজের আরো ফোন বাজারে আসবে। ডিস্পলেঃ ফোনটির ডিসপ্লে সাইজ ৬.৫৩ ইঞ্চি। এতে আইপিএস এলসিডি ডিসপ্লে ব্যবহার করা হয়েছে। এই ফোনের ডিসপ্লে প্রটেকশন হিসেবে আছে গরিলা গ্লাস ফাইভ। স্ক্রিন আর ফোনের বডির অনুপাত প্রায় ৮৩.৫%। এই ফোনের ডিসপ্লে ফুলএইচডি মানে ১০৮০পি। এই ডিস্পলের দৈর্ঘ্য ১৯.৫ একক এবং প্রস্থ হল ৯ একক। এত বড় ফোনের কারনে এই ফোনের পিপি আই ডেনসিটি ৩৯৫। যা একটু কম। প্লাটফর্মঃ এই ফোনের অপারেটিং সিস্টেম এন্ড্রয়েড ১০ এবং এর...