解决 Python Tkinter 中 'NameError: name 'precision_score' is not defined' 错误

在使用 Tkinter 构建机器学习应用程序时,你可能会遇到 'NameError: name 'precision_score' is not defined' 错误。这个错误表明你试图使用 precision_score 函数,但 Python 解释器无法在当前作用域中找到它的定义。

错误原因:

出现此错误是因为你没有导入 precision_score 函数。precision_score 函数是 sklearn.metrics 模块的一部分,你需要先导入它才能使用。

解决方案:

在你的代码文件开头添加以下语句来导入 accuracy_score, precision_score, recall_scoref1_score 函数:pythonfrom sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score

代码示例:

以下是修正后的 build_clf 函数代码,其中包含了必要的导入语句:pythonfrom sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score

def build_clf(): global data, clf,X_train,X_test,Y_train,Y_test #对用户输入值的合法性判断 if data is None: messagebox.showerror('错误', '请先读取数据!') return # 创建决策树模型 clf = DecisionTreeClassifier()

# 训练模型    clf.fit(X_train, Y_train)    Y_pred = clf.predict(X_test)    accuracy = accuracy_score(Y_test, Y_pred)    precision = precision_score(Y_test, Y_pred, average='macro')    recall = recall_score(Y_test, Y_pred, average='macro')    f1 = f1_score(Y_test, Y_pred, average='macro')    messagebox.showinfo('提示', f'模型构建成功!

模型预测准确率:{accuracy:.2f} 模型精确度:{precision:.2f} 模型召回率:{recall:.2f} 模型F1值:{f1:.2f}')

通过添加导入语句,你告诉 Python 解释器在哪里可以找到 precision_score 函数的定义。

总结:

在 Python 中使用任何库或模块中的函数之前,务必先导入它们。


原文地址: https://www.cveoy.top/t/topic/fYMC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录