|
|
|
|
|
|
|
import simplestart as ss |
|
|
|
from sklearn.datasets import load_iris |
|
import pandas as pd |
|
import pickle |
|
import numpy as np |
|
|
|
|
|
species = ['setosa', 'versicolor', 'virginica'] |
|
image = ['./images/setosa.jpg', './images/versicolor.jpg', './images/virginica.jpg'] |
|
with open('./data/model.pkl', 'rb') as f: |
|
model = pickle.load(f) |
|
|
|
|
|
def slidechange(event): |
|
predict() |
|
|
|
def predict(): |
|
|
|
inp = np.array([sepal_length.value, sepal_width.value, petal_length.value, petal_width.value]) |
|
inp = np.expand_dims(inp,axis=0) |
|
prediction = model.predict_proba(inp) |
|
|
|
|
|
|
|
|
|
if True: |
|
df = pd.DataFrame(prediction, index = ['result'], columns=species).round(4) |
|
table_result.data = df |
|
ss.session["result"] = species[np.argmax(prediction)] |
|
image_flower.image = image[np.argmax(prediction)] |
|
|
|
|
|
with ss.sidebar(): |
|
ss.write("### Inputs") |
|
|
|
sepal_length = ss.slider("sepal length (cm)",4.3, 7.9, 5.0, onchange=slidechange) |
|
|
|
sepal_width = ss.slider("sepal width (cm)",2.0,4.4,3.6, onchange=slidechange) |
|
petal_length = ss.slider("petal length (cm)",1.0,6.9,1.4, onchange=slidechange) |
|
petal_width = ss.slider("petal width (cm)",0.1,2.5,0.2, onchange=slidechange) |
|
|
|
|
|
ss.write("## 鸢尾花分类预测") |
|
ss.write("改变花萼花瓣的长度宽度,在3种可能的类别中预测") |
|
|
|
ss.write(''' |
|
# Results |
|
Following is the probability of each class |
|
''') |
|
|
|
ss.space() |
|
|
|
table_result = ss.table(show_border = True) |
|
ss.write("**This flower belongs to @result" + " class**") |
|
|
|
ss.space() |
|
|
|
image_flower = ss.image(image[0]) |
|
|
|
predict() |
|
|