多标签学习(multi-label learning)扫盲,混淆矩阵

1,MLL 没有单独的直观的二维混淆矩阵,sklearn的实现是多少label就有多少混淆矩阵,每个label一个2x2的混淆矩阵。
(每个label的值是0/1)

from sklearn.metrics import multilabel_confusion_matrix
import numpy as np
classes = ['green', 'black', 'red', 'blue']
targetSrc = [[0,1,1,1], [0,0,1,0], [1,0,0,1], [1,1,1,0], [1,0,0,0]]
predSrc = [[0,1,0,1], [0,0,1,1], [1,0,0,1], [1,0,1,0], [1,0,0,0]]
target = np.array(targetSrc)
pred = np.array(predSrc)
cm = multilabel_confusion_matrix(target, pred)
print(cm.shape) # (4, 2, 2)
print(cm)
# [[[2 0]
#   [0 3]] # 第一个label没有预测错的
#
# [[3 0]
# [1 1]] # 第二个label, 有一个 black预测成了非black
#
# [[2 0] # 一个red预测成了非red
#  [1 2]]
#
# [[2 1] # 一个非blue预测成了blue
#  [0 2]]]

注意:

  1. sklearn要安装 0.21及以上版本。
  2. 上述例子中是4个label, 5个样本,最终的结果是由4个小的混淆矩阵组成的。
  3. 每个小矩阵纵轴是 true label [0, 1], 横轴是 predict label [0, 1]
  4. 输入可以接受numpy array或者torch tensor

参考:
https://scikit-learn.org/stable/modules/generated/sklearn.metrics.multilabel_confusion_matrix.html
https://stackoverflow.com/questions/55877681/importerror-cannot-import-name-multilabel-confusion-matrix

### 多视图多标签学习的概念与方法 多视图多标签学习Multi-View Multi-Label Learning, MVML)是一种结合了多视图学习多标签学习的方法。它旨在利用来自不同视角的数据特征来提高分类性能,尤其是在处理复杂数据集时更为有效。 #### 1. 基本定义 多视图多标签学习的核心在于如何有效地融合多个视图的信息以提升预测精度。每个视图可以看作是从不同的角度描述同一个样本[^1]。例如,在图像识别任务中,颜色直方图可能是一个视图,而纹理特征可能是另一个视图。通过整合这些视图中的互补信息,模型能够更全面地理解输入数据。 #### 2. 方法类别 根据具体实现方式的不同,MVML 可分为以下几类: - **基于集成的学习 (Ensemble-based Methods)** 此类方法通常会针对每一个单独的视图构建独立的基础分类器,并最终采用某种策略组合它们的结果。这种方法的优点是可以充分利用各个视图的独特特性。 - **联合表示学习 (Joint Representation Learning)** 联合表示学习试图找到一种统一的方式将所有视图映射到同一低维空间内进行后续操作。典型代表有CCA(Canonical Correlation Analysis)及其变体。 - **深度神经网络框架下的解决方案** 随着深度学习技术的发展,越来越多的研究者开始探索使用深层架构解决MVML问题。比如引入注意力机制(Multi-head attention mechanism),使得模型能够在训练过程中动态调整各视图的重要性权重[^2]。 #### 3. 数据预处理技巧 对于实际应用而言,除了设计合理的算法外还需要注意一些重要的前期准备工作: - 应用适当的数据增强(Data Augmentation Techniques)可以帮助缓解过拟合现象并增加泛化能力; - 当面对不平衡标签分布的情况时,则需采取相应的平衡措施如重采样或者代价敏感型损失函数等手段加以应对。 ```python import numpy as np from sklearn.multiclass import OneVsRestClassifier from sklearn.svm import SVC # Example of Binary Relevance approach using SVMs. X_train = [[0], [1], [2], [3]] y_train = [ [0, 1], [1, 1], [1, 0], [0, 0] ] classifier = OneVsRestClassifier(SVC(kernel='linear')) classifier.fit(X_train, y_train) print(classifier.predict([[0.8]])) ``` 上述代码片段展示了二元相关法(Binary Relevance)的一个简单实例,其中`OneVsRestClassifier`配合支持向量机完成多标签分类任务。 ---
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值