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

报错:'DataFrame'对象不可调用,混淆矩阵代码问题排查

解决混淆矩阵代码中的TypeError:'DataFrame'对象不可调用

嘿,这个问题我太熟悉了!你这是不小心踩了变量命名冲突的坑😎

问题根源

你把要创建的结果DataFrame变量命名成了confusion_matrix,但这个名字刚好和你要调用的sklearn评估函数confusion_matrix()重名了。当Python执行到confusion_matrix(y, yhat)这一步时,它已经把confusion_matrix当成你后面要赋值的那个空DataFrame变量了(而不是原本的sklearn函数),自然就会报错说“DataFrame对象不可调用”。

两种解决办法

方法1:给结果DataFrame换个不冲突的变量名(推荐)

最简单的方式就是把存储结果的变量名改成比如confusion_matrix_df,彻底避免和函数名撞车:

# 先确保你已经导入了sklearn的confusion_matrix函数
from sklearn.metrics import confusion_matrix
import pandas as pd

y = list(y_test.values)
yhat = list(predictions)
print(y)
print(yhat)

# 换个变量名,比如confusion_matrix_df
confusion_matrix_df = pd.DataFrame(
    confusion_matrix(y, yhat),
    columns=["Predicted False", "Predicted True"],
    index=["Actual False", "Actual True"]
)
display(confusion_matrix_df)

方法2:明确指定要调用的是sklearn的函数

如果你不想改变量名,也可以在调用函数时加上完整的模块路径,让Python清楚你要调用的是哪个confusion_matrix:

import sklearn.metrics as metrics
import pandas as pd

y = list(y_test.values)
yhat = list(predictions)
print(y)
print(yhat)

# 明确使用sklearn.metrics下的confusion_matrix函数
confusion_matrix = pd.DataFrame(
    metrics.confusion_matrix(y, yhat),
    columns=["Predicted False", "Predicted True"],
    index=["Actual False", "Actual True"]
)
display(confusion_matrix)

小提醒

这种命名冲突在Python里很常见,尤其是导入常用函数时,尽量避免用函数名、模块名来命名自己的变量,能省不少麻烦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:59:44