Spaces:
Runtime error
Runtime error
File size: 3,078 Bytes
6a7e2ee fbcd3b4 1e3d80a 4a7a2a8 789d604 6a7e2ee 1e3d80a 97edd24 015c506 6a7e2ee 97edd24 6a7e2ee |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
import gradio as gr
import numpy as np
import tensorflow as tf
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier, GradientBoostingClassifier
import joblib
import pickle
def fashion_MNIST_prediction(test_image, model='KNN'):
test_image_flatten = test_image.reshape((-1, 28*28))
fashion_mnist = tf.keras.datasets.fashion_mnist
(X_train, y_train), (X_test, y_test) = fashion_mnist.load_data()
class_names = ("T-shirt/top", "Trouser", "Pullover", "Dress", "Coat", "Sandal", "Shirt", "Sneaker", "Bag", "Ankle boot")
img_shape = X_train.shape
n_samples = img_shape[0]
width = img_shape[1]
height = img_shape[2]
x_train_flatten = X_train.reshape(n_samples, width*height)
if model == 'KNN':
with open('knn_model.pkl', 'rb') as f:
knn = pickle.load(f)
ans = knn.predict(test_image_flatten)
ans_prediction = knn.predict_proba(test_image_flatten)
return class_names[ans[0]], dict(zip(class_names, map(float, ans_prediction[0])))
elif model == 'DecisionTreeClassifier':
tree_model = joblib.load('tree_model.joblib')
ans = tree_model.predict(test_image_flatten)
ans_prediction = tree_model.predict_proba(test_image_flatten)
return class_names[ans[0]], dict(zip(class_names, map(float, ans_prediction[0])))
elif model == 'RandomForestClassifier':
best_model = joblib.load('best_model.pkl')
ans = best_model.predict(test_image_flatten)
ans_prediction = best_model.predict_proba(test_image_flatten)
return class_names[ans[0]], dict(zip(class_names, map(float, ans_prediction[0])))
elif model == 'AdaBoostClassifier':
best_estimator = joblib.load('best_adaboost_model.joblib')
ans = best_estimator.predict(test_image_flatten)
ans_prediction = best_estimator.predict_proba(test_image_flatten)
return class_names[ans[0]], dict(zip(class_names, map(float, ans_prediction[0])))
elif model == 'GradientBoostingClassifier':
best_estimator = joblib.load('best_gbc_model.joblib')
ans = best_estimator.predict(test_image_flatten)
ans_prediction = best_estimator.predict_proba(test_image_flatten)
return class_names[ans[0]], dict(zip(class_names, map(float, ans_prediction[0])))
else:
return "Invalid Model Selection"
input_image = gr.inputs.Image(shape=(28, 28), image_mode='L')
input_model = gr.inputs.Dropdown(['KNN', 'DecisionTreeClassifier', 'RandomForestClassifier', 'AdaBoostClassifier', 'GradientBoostingClassifier'])
output_label = gr.outputs.Textbox(label="Predicted Label")
output_probability = gr.outputs.Label(num_top_classes=10, label="Predicted Probability Per Class")
gr.Interface(fn=fashion_MNIST_prediction,
inputs=[input_image, input_model],
outputs=[output_label, output_probability],
title="Fashion MNIST classification").launch(debug=True) |