Seaborn 一维subplots ‘AxesSubplot‘ object is not subscriptable

本文介绍了一种在使用Python的Matplotlib库时遇到的AxesSubplot‘objectisnotsubscriptable错误,并给出了修正代码的方法。当使用subplots创建1行多列的子图时,若子图引用方式不正确会引发此错误。文章提供了正确的子图引用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当我执行以下代码时,出现AxesSubplot‘ object is not subscriptable错误提示,

fig, axes = plt.subplots(1, 5)
for index in range(5):
   sns.histplot(norm_data.iloc[:, index], kde=True, color='k', bins=30, ax=axes[0][index])
fig.set_figwidth(50)
fig.set_figheight(10)
plt.savefig('./norm.png', dpi=400)

后来发现是当subplots方法中的第一维参数为1时,hisplot方法中的ax参数不能使用[0][index],否则提示变量下标不可用。
所以源代码改为如下即可正常运行

fig, axes = plt.subplots(1, 5)
for index in range(5):
   sns.histplot(norm_data.iloc[:, index], kde=True, color='k', bins=30, ax=axes[index])
fig.set_figwidth(50)
fig.set_figheight(10)
plt.savefig('./norm.png', dpi=400)
### YOLO 模型的输出格式及其结果解析 YOLO(You Only Look Once)模型作为一种高效的目标检测框架,其输出通常是一个张量(Tensor),该张量包含了多个维度的信息,这些信息可以被进一步处理并转化为可视化的形式。 #### 1. 基本输出结构 YOLO 的输出通常是三维张量的形式 \( (S, S, B \times 5 + C) \),其中: - \( S \): 表示网格划分的数量。例如,在 YOLOv3 中,默认情况下输入图像会被划分为 \( 13 \times 13 \), \( 26 \times 26 \), 或者 \( 52 \times 52 \) 的网格。 - \( B \): 每个网格单元预测的边界框数量。 - \( C \): 类别数。 每个边界框包含五个基本参数:\( x, y, w, h, \text{confidence} \)[^1]。具体解释如下: - \( x, y \): 边界框中心相对于当前网格单元左上角的位置偏移量。 - \( w, h \): 边界框宽度和高度的比例值,相对整个图像尺寸进行归一化。 - Confidence Score (\( P(\text{object}) \)): 这表示某个对象存在于给定边界框中的概率。 此外,对于每一个可能的对象类别,还会有一个条件概率分布 \( Pr(Class_i | Object)\)。最终的结果可以通过以下公式计算得到: \[ Pr(Class_i and Object) = Pr(Object) * Pr(Class_i|Object) \] 这一步骤帮助确定哪个类别的置信度最高,并将其分配到相应的边界框中。 #### 2. 可视化过程 为了更好地理解和展示 YOLO 模型的检测效果,通常会将上述提到的数据转换成易于观察的形式——即带有标注边界的图片。这一过程中涉及以下几个方面: - **绘制边界框**: 使用预测出来的坐标数据来画出矩形区域。 - **显示标签文字**: 将具有最大可能性的那个类别名称附加在相应位置附近。 - **调整透明度或颜色编码**: 对不同类型的物体采用不同的色彩标记以便区分;也可以利用混淆矩阵的颜色深浅程度反映各类别之间的关系强度[^3]。 #### 3. 性能评估工具 - Confusion Matrix 除了直观地查看检测效果图之外,还可以借助一些统计图表来进行更深入细致的质量评测工作。比如前面提及过的两种版本的混淆矩阵图形文件 `confusion_matrix_normalized.png` 和 `confusion_matrix.png` ,它们分别代表标准化后的百分比比例图以及原始计数值表象图[^2] 。通过对这两个图表的研究能够更加清晰明了地掌握我们的算法在哪种特定情形下表现较好或者较差等情况。 ```python import matplotlib.pyplot as plt from sklearn.metrics import confusion_matrix import seaborn as sns def plot_confusion_matrix(y_true, y_pred, classes): cm = confusion_matrix(y_true, y_pred) fig, ax = plt.subplots(figsize=(7,7)) sns.heatmap(cm, annot=True, fmt="d", cmap='Blues', xticklabels=classes, yticklabels=classes) plt.ylabel('Actual') plt.xlabel('Predicted') plt.title('Confusion matrix') plt.show() ``` 此代码片段可用于生成热力图样式的混淆矩阵,便于分析模型的表现情况。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值