You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Streamlit应用界面显示NONE,终端输出预测结果求助

问题原因

你的prediction函数仅通过print()将预测结果输出到终端,没有返回任何值。当你调用result = prediction([strain,plNr])时,函数默认返回None,这就是界面显示NONE的原因。

修复方案

只需给prediction函数添加返回语句,让它把模型的预测值传递回主函数即可:

步骤1:修改prediction函数

将函数内的print(prediction)替换为返回语句,考虑到模型返回的是二维数组(如[[0.42784861]]),可以直接返回数组内的数值,让界面显示更直观:

def prediction(input_data):
    input_data_numpy= np.asarray(input_data)
    input_data_reshape=input_data_numpy.reshape(1,-1)
    prediction_result=loaded_model.predict(input_data_reshape)
    # 返回二维数组中的具体数值
    return prediction_result[0][0]

(注:这里把变量名从prediction改成prediction_result,避免和函数名重名造成混淆)

步骤2:优化界面展示(可选)

如果需要保留终端打印,可以在返回前添加print(prediction_result),同时格式化结果让界面展示更友好:

if st.button("result"):
    pred_value = prediction([strain,plNr])
    result = f"预测数量:{pred_value:.2f}"
完整修复后的代码
import pickle
import numpy as np 
import streamlit as st

loaded_model=pickle.load(open("C:/trained_model.sav",'rb'))

def prediction(input_data):
    input_data_numpy= np.asarray(input_data)
    input_data_reshape=input_data_numpy.reshape(1,-1)
    prediction_result=loaded_model.predict(input_data_reshape)
    print(prediction_result)  # 保留终端输出
    return prediction_result[0][0]
    
def main():
    st.title("Predict quantity")
    strain = st.radio("strain:",("cereal","sugar","salt"))
    plNr=st.slider('Number of plants:', 10, 2340, 25)
    result = ""
    if strain == "cereal":
        strain = 1
    elif strain == "sugar":
        strain = 2
    else:
        strain = 3
    if st.button("result"):
        pred_value = prediction([strain,plNr])
        result = f"预测数量:{pred_value:.2f}"
    st.success(result)

if __name__ =="__main__":
    main()

内容的提问来源于stack exchange,提问作者Stetco Oana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 04:06:26