前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >one hot 独热码

one hot 独热码

原创
作者头像
vanguard
发布2022-07-02 22:03:52
3990
发布2022-07-02 22:03:52
举报
文章被收录于专栏:vanguard

独热/one-hot在数位电路和机器学习中被用来表示一种特殊的位元组或向量,

直观来说就是有多少个状态就有多少比特,而且只有一个比特为1,其他全为0的一种码制。

该字节或向量里仅容许其中一位为1,其他位都必须为0。

其被称为独热因为其中只能有一个1,若情况相反,只有一个0,其余为1,则称为独冷(one-cold)。

在统计学中,虚拟变数代表了类似的概念。

通常,在通信网络协议栈中,使用八位或者十六位状态的独热码,且系统占用其中一个状态码,余下的可以供用户使用。

代码语言:python
代码运行次数:0
复制
import numpy as np
wide = 10
test = np.random.randint(wide,size=5)
print(test)

# raw
def one_hot(num,wide):
    res = np.zeros(wide)
    res[num] = 1
    return res
print(np.array([one_hot(i,wide) for i in test]))

# batch
def one_hots(narr,wide):
    res = np.zeros((narr.size,wide))
    row = np.arange(narr.size)
    res[row, narr] = 1
    return res
print(one_hots(test,wide))

# multi-hot
test = np.array([[1,2,3,4,5],[7,8,9,0,1]])
print(np.array([one_hots(i,wide).sum(axis=0) for i in test]))

# tensorflow
import tensorflow as tf
print(tf.keras.utils.to_categorical(test,num_classes=(wide)))

# ...
from sklearn.preprocessing import LabelBinarizer
print(LabelBinarizer().fit(np.arange(wide)).transform(test))
# OneHotEncoder ...

# pandas
# import pandas as pd
# print(pd.get_dummies(test,wide))

...

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档