刷牛客网python编程题遇到的one hot矩阵(独热编码)

今天开始刷牛客上的python题目,遇到一道题。

import numpy as np
a = np.repeat(np.arange(5).reshape([1,-1]),10,axis = 0)+10.0 b = np.random.randint(5, size= a.shape)
c = np.argmin(a*b, axis=1)
b = np.zeros(a.shape)
b[np.arange(b.shape[0]), c] = 1
print b

以上函数输出结果为()
A.Hello World!
B.一个 shape = (5,10) 的随机整数矩阵
C.一个 shape = (5,10) 的 one-hot 矩阵
D.一个 shape = (10,5) 的 one-hot 矩阵
链接:https://www.nowcoder.com/questionTerminal/aec1e54446714c448c02bd91ce1c8807

用ipython 分步实现
在这里插入图片描述

#生成数组[0,1,2,3,4]
np.arange(5)
#原数组共有x个元素,reshape([n,-1])意思是将原数组重组为n行x/n列的新数组
#所以数组共有5个元素,重组为1行5列的数组
reshape([1,-1])
#因为axis=0,所以是沿着横轴方向重复,增加行数
#所以原数组增加10行
repeat(np.arange(5).reshape([1,-1]), 10, axis = 0)
#数组每个元素都+10
a = repeat(np.arange(5).reshape([1,-1]), 10, axis = 0) + 10

在这里插入图片描述
在这里插入图片描述
a*b组成的新数组,给出每行最小值的下标。
在这里插入图片描述
在这里插入图片描述

【one-hot的基本思想】
将离散型特征的每一种取值都看成一种状态,若你的这一特征中有N个不相同的取值,那么我们就可以将该特征抽象成N种不同的状态,one-hot编码保证了每一个取值只会使得一种状态处于“激活态”,也就是说这N种状态中只有一个状态位值为1,其他状态位都是0。

【这样做的好处主要有】

  1. 解决了分类器不好处理属性数据的问题
  2. 在一定程度上也起到了扩充特征的作用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值