[这是一个简单的备忘录]
LabelBinarizer()是sklearn.preprocessing中的一个函数,通过这个函数可以实现机器学习中国对图像标签的独热编码。
独热编码是一种二进制编码,通俗的讲独热编码主要满足以下几个条件:
- 图像有n类,则编码长度为n
- 对第i类编码,只有第i位置1,其余为0 ( 1 ≤ i ≤ n 1 \leq i \leq n 1≤i≤n)
在使用LabelBinarizer()时,首先要申明一个变量作为其载体
(具体名词我不知道) ,再分别调用fit与transform函数实现。
for example:
import glob
from sklearn.preprocessing import LabelBinarizer
DATA_DIR = 'D:/Data/'
# 总共三个类别,每个类别下有十张图片
images = glob.glob(DATA_DIR + 'fruits_photos/*/*.jpg')
images = [x.replace('\\', '/') for x in images]
labels = [x.split('/')[3] for x in images]
unique_labels = set(labels)
# 将标签转换二进制格式
encoder = LabelBinarizer()
print(encoder)
encoder.fit(labels)
y = encoder.transform(labels).astype(float)
print(y)
输出结果为:
LabelBinarizer()
[[1. 0. 0.]
[1. 0. 0.]
[1. 0. 0.]
[1. 0. 0.]
[1. 0. 0.]
[1. 0. 0.]
[1. 0. 0.]
[1. 0. 0.]
[1. 0. 0.]
[1. 0. 0.]
[0. 1. 0.]
[0. 1. 0.]
[0. 1. 0.]
[0. 1. 0.]
[0. 1. 0.]
[0. 1. 0.]
[0. 1. 0.]
[0. 1. 0.]
[0. 1. 0.]
[0. 1. 0.]
[0. 0. 1.]
[0. 0. 1.]
[0. 0. 1.]
[0. 0. 1.]
[0. 0. 1.]
[0. 0. 1.]
[0. 0. 1.]
[0. 0. 1.]
[0. 0. 1.]
[0. 0. 1.]]