ব্যবহারকারীর স্বীকৃতির জন্য এই নিবন্ধের মেশিন লার্নিং মডেলগুলিতে ব্যবহৃত কীস্ট্রোক গতিবিদ্যা হল আচরণগত বায়োমেট্রিক্স৷ কীস্ট্রোক ডায়নামিক্স স্বতন্ত্র উপায় ব্যবহার করে যা প্রত্যেক ব্যক্তি তাদের পরিচয় নিশ্চিত করতে টাইপ করে। এটি কী-প্রেস এবং কী-রিলিজে 2টি কীস্ট্রোক ইভেন্ট বিশ্লেষণ করে সম্পন্ন করা হয় — যা টাইপিং প্যাটার্ন বের করতে কম্পিউটার কীবোর্ডে একটি কীস্ট্রোক তৈরি করে। নিবন্ধটি পরীক্ষা করবে কিভাবে এই ML মডেলগুলি বাস্তব জীবনের পরিস্থিতিতে ব্যবহার করা যেতে পারে একজন ব্যবহারকারীর ভবিষ্যদ্বাণী করতে।
পূর্ববর্তী নিবন্ধটি বর্ণনা করেছে যে কিভাবে আমরা 3 ML মডেলকে প্রশিক্ষণ দিতে পারি, 100 জন ব্যবহারকারীর কাছ থেকে +880 কীবোর্ড ইনপুটের একটি সেটে যাকে একই পাঠ্য 12 বার লিখতে বলা হয়েছিল।
বাস্তব জীবনের পরিস্থিতি অনুকরণ করতে আমরা যে অ্যাপগুলি ব্যবহার করব।
স্যান্ডবক্স : বাস্তব জীবনের পরিস্থিতি পরীক্ষা করার জন্য আমরা ব্যবহার করব
উত্পাদন : যখন আমরা এই অ্যাপ্লিকেশনটিকে উত্পাদনে স্থানান্তর করতে চাই তখন আমরা কেবল ফ্লাস্ক কোডের বিটগুলিকে একটি কোড দিয়ে প্রতিস্থাপন করতে পারি
ফ্লাস্ক হল একটি ওয়েব-ফ্রেমওয়ার্ক যা আমরা Lambda + API গেটওয়ের প্রতিলিপি করতে ব্যবহার করতে পারি।
Lambda হল AWS-এ হোস্ট করা একটি সার্ভারবিহীন ওয়েব-পরিষেবা, যা বিভিন্ন ভাষায় লেখা ইভেন্ট চালিত কোড চালাতে পারে, তবে এই অ্যাপের জন্য আমরা পাইথন ব্যবহার করব।
ডেটা প্রবাহ হল:
পূর্বে উল্লিখিত সমস্ত কোড আপনি Github প্রকল্প পৃষ্ঠায় খুঁজে পেতে পারেন:
https://github.com/BogdanAlinTudorache/KeystrokeDynamics
{ "info": { "_postman_id": "c62ddbda-e487-432f-998a-4dfc9313f0fa", "name": "BogdanTudorache", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" }, "item": [ { "name": "predict_user", "request": { "method": "POST", "header": [], "body": { "mode": "raw", "raw": "{\n \"Model\": \"RF\",\n \"HT\": {\n \"Mean\": 48.43,\n \"STD\": 23.34\n },\n \"PPT\": {\n \"Mean\": 120.43,\n \"STD\": 37.41\n },\n \"RRT\": {\n \"Mean\": 124.43,\n \"STD\": 45.34\n },\n \"RPT\": {\n \"Mean\": 132.56,\n \"STD\": 47.12\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "http://127.0.0.1:5000", "protocol": "http", "host": [ "127", "0", "0", "1" ], "port": "5000" } }, "response": [] } ] }
আপনি GitHub থেকে ফাইলটি ডাউনলোড করতে পারেন।
{ "Model": "RF", "HT": { "Mean": 48.43, "STD": 23.34 }, "PPT": { "Mean": 120.43, "STD": 37.41 }, "RRT": { "Mean": 124.43, "STD": 45.34 }, "RPT": { "Mean": 132.56, "STD": 47.12 } }
যদি আমরা AWS-এ সবকিছু সরানোর আগে প্রক্রিয়াটি স্যান্ডবক্স পরীক্ষা করতে চাই তবে আমাদের অবশ্যই ফ্লাস্ক ব্যবহার করে একটি এন্ড-টু-এন্ড কল প্রতিলিপি করতে হবে।
GitHub-এ, আপনি flask_lambda_function.py-এর সম্পূর্ণ সংস্করণ পাবেন এবং যেকোনো IDE-তে আপনাকে স্ক্রিপ্টটি চালাতে হবে কারণ এটি স্বয়ংক্রিয়ভাবে ফ্লাস্ক অ্যাপ চালু করবে।
আমার ক্ষেত্রে, আমি ইন্টেলিজে আইডিয়া ব্যবহার করছি তাই আমি কেবল স্ক্রিপ্টটি চালাই (ডান ক্লিক করুন → রান):
একবার স্ক্রিপ্টটি IDE এর নীচের অংশে শুরু হলে আপনি পাইথন কনসোল দেখতে পাবেন যে ওয়েবসার্ভিসটি লোকালহোস্ট এবং পোর্ট 5000 এ শুরু হয়েছে (আমি মনে করি এটি ডিফল্ট তবে এটিও কনফিগার করা যেতে পারে)।
এখন যখনই আমরা একটি HTTP অনুরোধ POST করি, তখন আমাদের বাস্তব জীবনের দৃশ্যের অনুকরণ করে ফ্লাস্ক অ্যাপটি ট্রিগার হবে।
@app.route('/', methods=['GET', 'POST']) def index(): # Bellow code should be uncommented when running in AWS:Lambda # above should be commented as well as flask import + app definition # def lambda_handler(event, context): """ Lambda handler: When a request hits the API gateway linked to this lambda_function this is the function that gets called. The request data is passed as the event variable which is a dictionary object, in this case it the json of the POST request from which we extract the body details """ # Parses the details from the POST request: extracts model and input data # Based on model it imports the trained model from local # Outputs the predicted user based on input data try: prediction = functions.predict_user(request.get_json()) # Below code should be uncommented when running from AWS, above should be commented. # prediction = functions.predict_user(event) return jsonify({'statuscode': 200, 'status': 'success', 'predicted user': str(prediction) }) except Exception as e: return jsonify({'statuscode': 400, 'status': 'error', 'message': str(e)})
উপরের কোডটি ফ্লাস্ক-অ্যাপে সেট করা হয়েছে তবে কিছু লাইনে মন্তব্য ও মন্তব্য না করে আপনি সহজেই Lambda-এ যেতে পারেন।
গঠনটি খুবই সহজ, আমরা কেবল অন্য একটি ফাংশনকে কল করছি, যা হল predict_user() এবং POST অনুরোধ থেকে json বডি ইনপুট হিসাবে প্রদান করে।
def predict_user(event): """ Gets the input details from the body of the POST request and returns the predicted user """ # Print the event for debugging purposes print(event) # Check if the message has the correct body structure if ['Model', 'HT', 'PPT', 'RRT', 'RPT'] == list(event.keys()): print(f"Model is:", event['Model']) if event["Model"] == "SVM": # Load the trained SVM model from the joblib file model_path = os.path.join(basedir, 'models', 'svm_model.joblib') model = joblib.load(model_path) elif event["Model"] == "RF": # Load the trained Random Forest model from the joblib file model_path = os.path.join(basedir, 'models', 'rf_model.joblib') model = joblib.load(model_path) elif event["Model"] == "XGBoost": # Load the trained XGBoost model from the joblib file model_path = os.path.join(basedir, 'models', 'xgb_model.joblib') model = joblib.load('model_path') # Extract the features from the event dictionary features = [ event['HT']['Mean'], event['HT']['STD'], event['PPT']['Mean'], event['PPT']['STD'], event['RRT']['Mean'], event['RRT']['STD'], event['RPT']['Mean'], event['RPT']['STD'] ] # Make a prediction using the loaded model and the extracted features prediction = model.predict([features]) # Return the predicted user return prediction[0]
এই ফাংশনটি সরলভাবে লেখা হয়েছে, মডেল প্যারামিটারের উপর নির্ভর করে আমরা নির্দিষ্ট প্রাক-প্রশিক্ষিত এমএল মডেল লোড করার সিদ্ধান্ত নিই।
প্রাক-প্রশিক্ষিত মডেলের সাহায্যে আমরা ব্যবহারকারীর ভবিষ্যদ্বাণী করি এবং অনুরোধকারীকে ফেরত দেই। ( শেষ পোস্টম্যান প্রতিক্রিয়া ছবি দেখুন )
মডেলদের প্রশিক্ষণ এই নিবন্ধের প্রথম অংশে করা হয়েছে, উপরের লিঙ্কটি দেখুন ।
আপনি যদি নিবন্ধটি পছন্দ করেন এবং আমাকে সমর্থন করতে চান তবে নিশ্চিত করুন:
🔔 আমাকে অনুসরণ করুন বোগদান টুডোরাচে