Deploying machine learning models is a critical step in turning your experiments into real-world applications. With Flask, you can easily build a lightweight web application to showcase your machine learning models. Whether it’s a predictive analytics tool, image classifier, or recommendation engine, Flask makes deployment simple and effective.
In this post, we’ll explore how to build and deploy a Flask app that integrates a machine learning model. Let’s dive in!
What We’ll Build
A Flask web app that:
- Accepts user input through a web interface.
- Processes the input using a trained machine learning model.
- Displays predictions or results in a user-friendly format.
Setup
Install Required Libraries
pip install flask scikit-learn pandas joblib
Prerequisites
- A trained machine learning model saved as a
.pkl
or.joblib
file. - Basic knowledge of Python and Flask.
Python Code: Building the Flask App
Step 1: Train and Save Your Model
Let’s assume we’re building a simple app to predict housing prices.
from sklearn.linear_model import LinearRegression
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
import joblib
# Load dataset
data = load_boston()
X, y = data.data, data.target
# Split dataset
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Train model
model = LinearRegression()
model.fit(X_train, y_train)
# Save model
joblib.dump(model, "housing_price_model.pkl")
print("Model saved as housing_price_model.pkl")
Step 2: Create the Flask App
Create a file called “app.py”:
from flask import Flask, request, jsonify, render_template
import joblib
import numpy as np
# Load the trained model
model = joblib.load("housing_price_model.pkl")
# Initialize Flask app
app = Flask(__name__)
@app.route("/")
def home():
return render_template("index.html") # Simple HTML form for user input
@app.route("/predict", methods=["POST"])
def predict():
# Parse input features from the request
input_features = [float(x) for x in request.form.values()]
input_array = np.array(input_features).reshape(1, -1)
# Make prediction
prediction = model.predict(input_array)[0]
# Return result
return jsonify({"prediction": round(prediction, 2)})
if __name__ == "__main__":
app.run(debug=True)
Step 3: Create a Simple HTML Form
Create a file called “templates/index.html”:
<!DOCTYPE html>
<html>
<head>
<title>Housing Price Predictor</title>
</head>
<body>
<h1>Predict Housing Prices</h1>
<form action="/predict" method="post">
<label>Enter features (comma-separated):</label><br>
<input type="text" name="features" placeholder="Enter features here"><br><br>
<button type="submit">Predict</button>
</form>
</body>
</html>
How It Works
- Input: Users provide feature values through a web form.
- Processing: Flask processes the input and passes it to the trained model.
- Prediction: The model generates a prediction, which Flask displays in the web app.
Deploying Your App
You can deploy your Flask app to platforms like:
- Heroku: A simple and free platform for small apps.
- AWS Elastic Beanstalk: For scalable and production-ready apps.
- Docker: Containerize your app for easy deployment across environments.
Why Use Flask for Machine Learning Deployment?
- Lightweight: Perfect for small to medium-sized ML applications.
- Simple Integration: Easily integrate with Python-based ML models.
- Customizable: Fully control the user interface and backend logic.
Use Cases
- Predictive Analytics: Build apps for forecasting and trend analysis.
- Personalization: Create recommendation engines for users.
- Education: Develop interactive tools to teach machine learning concepts.
What kind of machine learning app would you build with Flask? Share your ideas or questions in the comments, and let’s discuss how to make ML deployment simple and impactful!
#MachineLearning #FlaskApp #Python #MLDeployment #AIIntegration #TechInnovation