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.txtfile with the required packages (Flask, scikit-learn, etc.). - Create a
Procfileto 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.