import joblib import streamlit as st from PIL import Image, ImageOps import numpy as np # Load the model model = joblib.load('src/mnist_svc_model.pkl') # Streamlit app st.title("🔢 MNIST Digits Classification") st.write("Predict the digit of a handwritten digit.") st.image("https://opendatascience.com/wp-content/uploads/2017/05/handwritten.jpg", width='stretch') # Image input image = st.file_uploader("Upload an image of a handwritten digit", type=["jpg", "jpeg", "png"]) if image: st.image(image, width=200) # Predict button if st.button("Predict", type="primary", use_container_width=True): if image: img = ImageOps.invert(Image.open(image).convert('L').resize((28, 28))) x = np.array(img, dtype=np.float32).reshape(1, -1) / 255.0 prediction = model.predict(x) st.success(f"Predicted digit: **{prediction[0]}**") else: st.error("Please upload an image of a handwritten digit")