Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python &引用;拖尾;一个热编码_Python_Numpy - Fatal编程技术网

Python &引用;拖尾;一个热编码

Python &引用;拖尾;一个热编码,python,numpy,Python,Numpy,我试图做一些类似于一个热编码的事情,但是我希望所有的类(包括所选的类)都是1,而不是所选的类为1,其余的为0。假设我有一个带有标签的培训批次(5个可能的类标签;0、1、2、3、4) 我可以用一个热编码 def one_hot_encode(arr, num_classes): return np.eye(num_classes)[arr] 给 >>> one_hot_encode(y, 5) array([[ 1., 0., 0., 0., 0.],

我试图做一些类似于一个热编码的事情,但是我希望所有的类(包括所选的类)都是1,而不是所选的类为1,其余的为0。假设我有一个带有标签的培训批次(5个可能的类标签;0、1、2、3、4)

我可以用一个热编码

def one_hot_encode(arr, num_classes):
    return np.eye(num_classes)[arr]

>>> one_hot_encode(y, 5)
array([[ 1.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  1.,  0.,  0.],
       [ 0.,  1.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  1.,  0.],
       [ 0.,  0.,  0.,  0.,  1.],
       [ 0.,  1.,  0.,  0.,  0.]])
我喜欢吃晚饭

array([[ 1.,  0.,  0.,  0.,  0.],
       [ 1.,  1.,  1.,  0.,  0.],
       [ 1.,  1.,  0.,  0.,  0.],
       [ 1.,  1.,  1.,  1.,  0.],
       [ 1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  0.,  0.,  0.]])

有人知道怎么做吗?

在函数定义中,可以使用下三角矩阵而不是单位矩阵来实现这一点:

def many_hot_encode(arr, num_classes):
    return np.tril(np.ones(num_classes))[arr]

many_hot_encode(y,5)
array([[ 1.,  0.,  0.,  0.,  0.],
       [ 1.,  1.,  1.,  0.,  0.],
       [ 1.,  1.,  0.,  0.,  0.],
       [ 1.,  1.,  1.,  1.,  0.],
       [ 1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  0.,  0.,  0.]])

可以通过在函数定义中使用下三角矩阵而不是单位矩阵来实现这一点:

def many_hot_encode(arr, num_classes):
    return np.tril(np.ones(num_classes))[arr]

many_hot_encode(y,5)
array([[ 1.,  0.,  0.,  0.,  0.],
       [ 1.,  1.,  1.,  0.,  0.],
       [ 1.,  1.,  0.,  0.,  0.],
       [ 1.,  1.,  1.,  1.,  0.],
       [ 1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  0.,  0.,  0.]])

可以通过在函数定义中使用下三角矩阵而不是单位矩阵来实现这一点:

def many_hot_encode(arr, num_classes):
    return np.tril(np.ones(num_classes))[arr]

many_hot_encode(y,5)
array([[ 1.,  0.,  0.,  0.,  0.],
       [ 1.,  1.,  1.,  0.,  0.],
       [ 1.,  1.,  0.,  0.,  0.],
       [ 1.,  1.,  1.,  1.,  0.],
       [ 1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  0.,  0.,  0.]])

可以通过在函数定义中使用下三角矩阵而不是单位矩阵来实现这一点:

def many_hot_encode(arr, num_classes):
    return np.tril(np.ones(num_classes))[arr]

many_hot_encode(y,5)
array([[ 1.,  0.,  0.,  0.,  0.],
       [ 1.,  1.,  1.,  0.,  0.],
       [ 1.,  1.,  0.,  0.,  0.],
       [ 1.,  1.,  1.,  1.,  0.],
       [ 1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  0.,  0.,  0.]])
你也可以使用-

样本运行-

In [71]: y = np.array([0,2,1,3,4,1])

In [72]: num_classes = 5

In [73]: (y[:,None] >= np.arange(num_classes)).astype(float)
Out[73]: 
array([[ 1.,  0.,  0.,  0.,  0.],
       [ 1.,  1.,  1.,  0.,  0.],
       [ 1.,  1.,  0.,  0.,  0.],
       [ 1.,  1.,  1.,  1.,  0.],
       [ 1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  0.,  0.,  0.]])
你也可以使用-

样本运行-

In [71]: y = np.array([0,2,1,3,4,1])

In [72]: num_classes = 5

In [73]: (y[:,None] >= np.arange(num_classes)).astype(float)
Out[73]: 
array([[ 1.,  0.,  0.,  0.,  0.],
       [ 1.,  1.,  1.,  0.,  0.],
       [ 1.,  1.,  0.,  0.,  0.],
       [ 1.,  1.,  1.,  1.,  0.],
       [ 1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  0.,  0.,  0.]])
你也可以使用-

样本运行-

In [71]: y = np.array([0,2,1,3,4,1])

In [72]: num_classes = 5

In [73]: (y[:,None] >= np.arange(num_classes)).astype(float)
Out[73]: 
array([[ 1.,  0.,  0.,  0.,  0.],
       [ 1.,  1.,  1.,  0.,  0.],
       [ 1.,  1.,  0.,  0.,  0.],
       [ 1.,  1.,  1.,  1.,  0.],
       [ 1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  0.,  0.,  0.]])
你也可以使用-

样本运行-

In [71]: y = np.array([0,2,1,3,4,1])

In [72]: num_classes = 5

In [73]: (y[:,None] >= np.arange(num_classes)).astype(float)
Out[73]: 
array([[ 1.,  0.,  0.,  0.,  0.],
       [ 1.,  1.,  1.,  0.,  0.],
       [ 1.,  1.,  0.,  0.,  0.],
       [ 1.,  1.,  1.,  1.,  0.],
       [ 1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  0.,  0.,  0.]])