二分類和多分類的區別
- 都是one-hot編碼格式的話:多分類是[[]] 兩個【】,二分類是[] 一個【】
- 多分類的簡易模式: 可能會出現非01的例如[1, 0, 2]
- 也就是多分類,1的位置索引可能在3個不同的位置
- 這是多分類的one-hot表示(2個樣本,3個類別),一個樣本有三個位置(1可能會出現3個位置),就會出3個類別 y_true = torch.tensor([[0, 1, 0], [1, 0, 0]], dtype=torch.float)
# 例子1:這是多分類的one-hot表示(2個樣本,3個類別)
y_true = torch.tensor([[0, 1, 0], [1, 0, 0]], dtype=torch.float)
# 第一個樣本:類別1(索引1處為1)
# 第二個樣本:類別0(索引0處為1)
# 這是3分類問題(因為有3個位置)
# 例子2:這是二分類的類別索引表示
y_true = torch.tensor([1, 0], dtype=torch.float)
# 第一個樣本:類別1
# 第二個樣本:類別0
# 這是2分類問題(只有0和1兩個值)
# 例子3:這是二分類的類別索引表示
y_true = torch.tensor([0, 1, 0], dtype=torch.float)
# 三個樣本分別屬於類別0、1、0
# 這是2分類問題(只有0和1兩個值)
關鍵區別總結
二分類的標籤表示:
# 方式1:類別索引(最常用)
y_true = torch.tensor([0, 1, 0, 1]) # 每個樣本一個0或1
# 方式2:one-hot編碼(較少用)
y_true = torch.tensor([[1, 0], [0, 1], [1, 0], [0, 1]])
多分類的標籤表示:
# 方式1:類別索引(最常用)
y_true = torch.tensor([0, 2, 1, 0]) # 每個樣本一個整數(0到K-1)
# 方式2:one-hot編碼
y_true = torch.tensor([
[1, 0, 0], # 類別0
[0, 0, 1], # 類別2
[0, 1, 0], # 類別1
[1, 0, 0] # 類別0
])
判斷分類數量的方法
從類別索引判斷:
# 二分類:值只能是0或1
y_true = torch.tensor([0, 1, 0, 1]) # 2分類
# 多分類:值可以是0,1,2,...K-1
y_true = torch.tensor([0, 2, 1, 0]) # 至少3分類(因為有0,1,2)
從one-hot編碼判斷:
# 二分類:每個向量長度=2
y_true = torch.tensor([[1,0], [0,1], [1,0]]) # 2分類
# 多分類:每個向量長度=K(K>2)
y_true = torch.tensor([[1,0,0], [0,0,1], [0,1,0]]) # 3分類
您的主要理解是正確的:
- 通過看標籤中不同值的數量來判斷分類數
- 二分類只有0和1
- 多分類有0,1,2,...K-1
只是要注意表示格式的區別(類別索引 vs one-hot編碼),但您對本質的理解是準確的!👍
本文章為轉載內容,我們尊重原作者對文章享有的著作權。如有內容錯誤或侵權問題,歡迎原作者聯繫我們進行內容更正或刪除文章。