运行Streamlit分类应用时出现Python NoneType错误求助
问题根因
你定义的add_parameter_ui函数,仅在选择Random Forest分类器的分支下执行了return params操作,当你选择KNN或SVM分类器时,函数执行完对应分支后没有显式返回值,Python会默认返回None,所以你拿到的params变量是None,调用params['K']自然就抛出了不可下标访问的错误。
修复方案
把return params的缩进调整到和三个分支判断同级,让函数不管走哪个分支,最后都返回组装好的参数字典即可,修改后的add_parameter_ui函数代码如下:
def add_parameter_ui(clf_name): params = dict() if clf_name =="KNN": K = st.sidebar.slider("K",1,15) params["K"] = K elif clf_name =="SVM": C = st.sidebar.slider("C", 0.01,10.0) params["C"] = C else: max_depth = st.sidebar.slider("max_depth", 2,15) n_estimators = st.sidebar.slider("n_estimators",1,100) params["max_depth"]= max_depth params["n_estimators"] = n_estimators # return逻辑移到所有分支外侧,所有分类器场景都能正常返回参数字典 return params
内容的提问来源于stack exchange,提问作者ahmedm
相关产品推荐
相关产品推荐

