মডেলের বাস্তব উদাহরণ

Model Deployment এবং API Integration - পাইথনে লজিস্টিক রিগ্রেশন (Logistic Regression in Python) - Machine Learning

340

REST API (Representational State Transfer Application Programming Interface) একটি জনপ্রিয় ওয়েব সার্ভিস আর্কিটেকচার যা ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা আদান-প্রদান করতে ব্যবহৃত হয়। REST API এর মাধ্যমে মডেল সার্ভ করা, বিশেষত মেশিন লার্নিং মডেল সার্ভ করার জন্য একটি সাধারণ পদ্ধতি, যা আপনার মডেলকে সহজে প্রোডাকশনে নিয়ে আসতে সহায়তা করে।

এখানে আমি একটি Logistic Regression মডেল তৈরি করে, সেটি Flask বা FastAPI এর মাধ্যমে REST API হিসেবে সার্ভ করব। এর মাধ্যমে, আপনি মডেলটিকে একটি API হিসেবে ব্যবহার করতে পারবেন যা HTTP রিকোয়েস্টের মাধ্যমে ইনপুট গ্রহণ করে এবং আউটপুট প্রদান করবে।


1. মডেল তৈরি (Logistic Regression)

প্রথমে আমরা একটি Logistic Regression মডেল তৈরি করব, যাতে এটি কিছু ডেটার উপর প্রশিক্ষণ হবে এবং একটি HTTP API মাধ্যমে এই মডেলটি সার্ভ করা হবে।

উদাহরণ ডেটাসেট তৈরি:

from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# উদাহরণ ডেটাসেট তৈরি
X, y = make_classification(n_samples=1000, n_features=10, n_classes=2, random_state=42)

# ডেটাকে ট্রেনিং এবং টেস্ট সেটে ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Logistic Regression মডেল তৈরি
model = LogisticRegression()

# মডেল প্রশিক্ষণ
model.fit(X_train, y_train)

# টেস্ট সেটের উপর মডেল মূল্যায়ন
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)

print(f"Model Accuracy: {accuracy * 100}%")

2. Flask এর মাধ্যমে মডেল API তৈরি

Flask একটি লাইটওয়েট Python ওয়েব ফ্রেমওয়ার্ক যা REST API তৈরির জন্য ব্যবহার করা যায়। আমরা এখানে Flask ব্যবহার করে মডেল সার্ভ করার একটি উদাহরণ দেখাব।

Flask ইনস্টল:

pip install flask

Flask API কোড:

from flask import Flask, request, jsonify
import pickle
import numpy as np

# Flask অ্যাপ তৈরি করা
app = Flask(__name__)

# মডেলটি লোড করা (এখানে আমরা মডেলটি pickle ফাইল হিসেবে সেভ করবো)
model = LogisticRegression()
model.fit(X_train, y_train)

# মডেলটি pickle ফাইল হিসেবে সেভ করা
with open('logistic_model.pkl', 'wb') as f:
    pickle.dump(model, f)

# মডেল লোড করার ফাংশন
def load_model():
    with open('logistic_model.pkl', 'rb') as f:
        return pickle.load(f)

# REST API এ রিকোয়েস্ট হ্যান্ডলার তৈরি করা
@app.route('/predict', methods=['POST'])
def predict():
    try:
        # ইনপুট ডেটা সংগ্রহ করা
        data = request.get_json()
        features = np.array(data['features']).reshape(1, -1)

        # মডেল প্রেডিকশন
        model = load_model()
        prediction = model.predict(features)

        # প্রেডিকশন রিটার্ন করা
        return jsonify({'prediction': int(prediction[0])})

    except Exception as e:
        return jsonify({'error': str(e)})

# API চালানো
if __name__ == '__main__':
    app.run(debug=True)

এখানে:

  • /predict এ একটি POST রিকোয়েস্ট করা হবে, যাতে JSON ফরম্যাটে ইনপুট ডেটা প্রেরণ করা হবে।
  • মডেলটি logistic_model.pkl নামে সেভ করা হয়েছে এবং এটি ফ্লাস্ক অ্যাপে লোড করা হচ্ছে।
  • API রিকোয়েস্টে প্রাপ্ত ইনপুট ফিচারের মাধ্যমে মডেল প্রেডিকশন করবে এবং আউটপুট হিসেবে একটি JSON রেসপন্স প্রদান করবে।

3. API ব্যবহার করার উদাহরণ

এখন, এই API কে ব্যবহার করার জন্য আপনি HTTP রিকোয়েস্ট পাঠাতে পারবেন, যেমন:

উদাহরণ POST রিকোয়েস্ট:

আপনি Postman বা cURL ব্যবহার করে API এ POST রিকোয়েস্ট পাঠাতে পারেন।

cURL কমান্ড:

curl -X POST http://127.0.0.1:5000/predict -H "Content-Type: application/json" -d '{"features": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]}'

এই রিকোয়েস্টের মাধ্যমে ইনপুট features পাঠানো হচ্ছে, যেগুলি মডেল প্রেডিকশন করার জন্য ব্যবহৃত হবে।

Postman:

Postman এর মাধ্যমে আপনি নিম্নলিখিত HTTP রিকোয়েস্ট পাঠাতে পারেন:

  1. HTTP Method: POST
  2. URL: http://127.0.0.1:5000/predict
  3. Body: JSON Format

    {
      "features": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
    }
    

Response:

{
  "prediction": 1
}

এখানে, API আপনার ইনপুট ফিচার দিয়ে প্রেডিকশন করবে এবং 1 (বা 0) রিটার্ন করবে, যা Logistic Regression মডেলের প্রেডিকশন হবে।


4. FastAPI ব্যবহার করে মডেল সার্ভিং

আপনি চাইলে FastAPI ব্যবহার করেও এই কাজ করতে পারেন। এটি Flask এর চেয়ে দ্রুত এবং আরো আধুনিক একটি ফ্রেমওয়ার্ক।

FastAPI ইনস্টল:

pip install fastapi uvicorn

FastAPI কোড উদাহরণ:

from fastapi import FastAPI
from pydantic import BaseModel
import numpy as np
import pickle

app = FastAPI()

# মডেল লোড করা
with open('logistic_model.pkl', 'rb') as f:
    model = pickle.load(f)

# ইনপুট ডেটা স্ট্রাকচার
class Features(BaseModel):
    features: list

@app.post("/predict/")
def predict(data: Features):
    try:
        # ইনপুট ডেটার প্রক্রিয়া
        features = np.array(data.features).reshape(1, -1)

        # প্রেডিকশন করা
        prediction = model.predict(features)

        return {"prediction": int(prediction[0])}
    except Exception as e:
        return {"error": str(e)}

FastAPI চালানো:

uvicorn your_filename:app --reload

এই কোডে FastAPI ব্যবহার করে আপনার মডেল একটি REST API হিসেবে চলবে এবং POST রিকোয়েস্টের মাধ্যমে মডেল প্রেডিকশন করবে।


সারাংশ:

  • Flask এবং FastAPI দুটি জনপ্রিয় ওয়েব ফ্রেমওয়ার্ক যা মডেল সার্ভ করার জন্য ব্যবহৃত হয়।
  • Logistic Regression মডেলটি pickle ফাইল হিসেবে সংরক্ষণ করা হয় এবং API এর মাধ্যমে ইনপুট নিয়ে প্রেডিকশন করা হয়।
  • REST API এর মাধ্যমে মডেল প্রেডিকশন তৈরি করে, যা সহজেই বিভিন্ন ক্লায়েন্ট (যেমন Postman, cURL) থেকে ব্যবহৃত হতে পারে।

এটি মডেলকে প্রোডাকশন পরিবেশে নিয়ে আসার জন্য একটি সাধারণ এবং কার্যকরী পদ্ধতি।

Content added By
Promotion

Are you sure to start over?

Loading...