Sure, here’s an example of deploying a machine learning model for a simple classification task using the Flask web framework:
Step 1: Train the Model Assuming you have already trained a machine learning model using a dataset, here’s a simplified example using a logistic regression classifier:
from sklearn.linear_model import LogisticRegression # Load your training data X_train, y_train = load_training_data() # Train the model model = LogisticRegression() model.fit(X_train, y_train) # Save the trained model to a file save_model_to_file(model, 'trained_model.pkl')
Step 2: Create a Flask Web App for Deployment Create a Flask web app to serve the trained model and accept input for making predictions.
from flask import Flask, request, jsonify import joblib app = Flask(__name__) # Load the trained model model = joblib.load('trained_model.pkl') @app.route('/predict', methods=['POST']) def predict(): # Get input data from the request data = request.get_json() input_features = data['features'] # Make predictions using the trained model predictions = model.predict(input_features) # Return predictions as JSON response response = {'predictions': predictions.tolist()} return jsonify(response) if __name__ == '__main__': app.run(debug=True)
Step 3: Deploy the Web App To deploy the Flask app, you can use various platforms such as Heroku, AWS, or a VPS (Virtual Private Server). Here’s a brief outline of deploying on Heroku:
- Install the Heroku CLI and log in to your Heroku account.
- Create a
requirements.txt
file with the required packages (Flask, scikit-learn, etc.). - Create a
Procfile
to specify the app’s entry point (web: python app.py
). - Initialize a Git repository in your project directory.
- Commit your code and push it to a remote repository (e.g., GitHub).
- Create a new Heroku app using the Heroku CLI.
- Deploy your app to Heroku using Git push.
- Your app should be live and accessible via the provided URL.
Step 4: Making Predictions After deploying the app, you can make predictions by sending a POST request to the /predict
endpoint with the input features. For example, you can use Python’s requests
library:
import requests data = {'features': [[2.5, 3.0]]} # Provide your input features response = requests.post('https://your-heroku-app.herokuapp.com/predict', json=data) predictions = response.json()['predictions'] print(predictions)
Please note that this is a simplified example for demonstration purposes. In a real-world scenario, you would need to handle more complex data preprocessing, security considerations, scaling for higher traffic, and other deployment-related challenges.