调用predict()函数计算模型预测时触发NameError错误求助
问题分析与解决
你定义了接受预测概率列表和阈值的predict()函数,同时创建了预测概率数组probs和阈值变量thresh,但调用predict(predict_prob, thresh)时触发NameError: name 'predict_prob' is not defined错误。
完整代码(含报错调用)
import numpy as np # 定义predict()函数 def predict(predict_prob,thresh): pred = [] for i in range(len(predict_prob)): if predict_prob[i] >= thresh: pred.append(1) else: pred.append(0) return pred # 预测概率数组 probs = [0.886,0.375,0.174,0.817,0.574,0.319,0.812,0.314,0.098,0.741, 0.847,0.202,0.31,0.073,0.179,0.917,0.64,0.388,0.116,0.72] # 阈值变量 thresh = 0.5 # 调用代码(报错行) preds = predict(predict_prob, thresh) # 调用predict函数报错
错误原因
predict_prob是函数的形参名,仅在函数内部有效,你实际创建的预测概率数组变量名为probs,调用时误用了形参名而非实际存在的变量名,导致Python找不到名为predict_prob的变量,触发NameError。
解决方法
将调用时的第一个参数替换为实际定义的probs:
preds = predict(probs, thresh)
优化建议(可选)
可以用列表推导式简化predict函数,让代码更简洁:
def predict(predict_prob, thresh): return [1 if prob >= thresh else 0 for prob in predict_prob]
内容的提问来源于stack exchange,提问作者Kdoyle73
相关产品推荐
相关产品推荐

