当我在我的机器学习项目上工作时,我正在寻找一行代码来将我的标签变成一个热门的向量。我在Reddit上遇到了来自u / benanne的这段代码。
np.eye(n_labels)[target_vector]
例如,对于target_vector = np.array([1, 4, 2, 1, 0, 1, 3, 2])
,它返回一个热门编码值:
np.eye(5)[target_vector]
Out:
array([[ 0., 1., 0., 0., 0.],
[ 0., 0., 0., 0., 1.],
[ 0., 0., 1., 0., 0.],
...,
[ 0., 1., 0., 0., 0.],
[ 0., 0., 0., 1., 0.],
[ 0., 0., 1., 0., 0.]])
虽然它确实有效,但我不确定它是如何工作的或原因。
答案 0 :(得分:6)
这很简单。 np.eye(n_labels)
创建大小为n_labels
的单位矩阵,然后使用target_vector
从该矩阵中选择与当前目标值对应的行。由于单位矩阵中的每一行只包含一个1
元素而其余的0
元素,因此每一行都是有效的“一个热编码”。
答案 1 :(得分:0)
$history = HistoricalPrice::where('item_id', $i->id)->get();
是选择ndarray中的第一行
ndarray[[0]]
输出
t = np.arange(9).reshape(3,3)
print t
print t[[1]]