【python 基础】One-Hot编码和反One-Hot编码

文章目录

  • 一、 什么是one-hot编码
  • 二、one-hot和de-one-hot编码:

一、 什么是one-hot编码

One-Hot编码是用N位状态寄存器来对N个状态进行编码。一个变量,共有3个分类值(0,1,2),那么N为3,对应的One-Hot编码可以表示为100,010,001。

二、one-hot和de-one-hot编码:

#coding=utf-8

import numpy as np 
from keras.utils import to_categorical

before_one_hot = np.array(([2],[0],[1],[2],[0]))
print("----------beofe the one hot encoding----------")
print(before_one_hot)

one_hot = to_categorical(before_one_hot)
print("----------after the one hot encoding----------")
print(one_hot)

print("----------before the de-one-hot encoding----------")
print(one_hot)
de_onehot = []
for i in range(len(one_hot)):
    if one_hot[i][0] == 1:
        de_onehot.append(0)
    elif one_hot[i][1] == 1:
        de_onehot.append(1)
    else:
        de_onehot.append(2)

print("----------after the de-one-hot encoding----------")
de_onehot = np.array(de_onehot)
de_onehot = de_onehot.reshape(-1,1)
print(de_onehot)

one-hot编码前后的形式如下:【python 基础】One-Hot编码和反One-Hot编码_第1张图片one-hot编码可以采用keras库的函数to_categorical()进行编码,de-one-hot我没有找到与之对应的函数,写了一个循环,遍历所有的标签,在每一个标签上进行判断。
这块写的就比较繁琐。主要是需要对标签的类别和形式清楚才可以使用,如果有更好的解决办法,可以在评论区交流一下
编码之后的one-hot 进行de-one-hot前后结果:
【python 基础】One-Hot编码和反One-Hot编码_第2张图片

你可能感兴趣的:(python,python,人工智能)