gpt4 book ai didi

python - Theano - 按组求和

转载 作者:行者123 更新时间:2023-12-01 03:54:11 24 4
gpt4 key购买 nike

我正在为 Theano 开发自定义似然函数(尝试拟合条件逻辑回归。)

可能性需要按组对值求和。。在 R 中,我们有“ave()”函数,在 Python Pandas 中,我们有“groupby()”函数。我如何在 Theano 中做类似的事情?

编辑更多详细信息

我想创建一个 cox 比例风险模型(与条件逻辑回归相同。)对数似然需要按组计算值的总和:

\sum{_{g=1}^G

在 Pandas 中,这将是:

temp = df.groupby('groupid')['eta'].aggregate(np.sum)
denominator = np.log(temp).sum()

在数据中,我们有一列包含组 ID 以及要求和的值

group    eta
1 2.1
1 1.8
1 0.9
2 1.2
2 0.75
2 1.42

组总和的输出将是:

group    sum
1 4.8
2 3.37

然后,求和的对数之和:

log(4.8) + log(3.37) = 2.7835

这在 Pandas 中可以快速轻松地完成。我怎样才能在 Thano 中做类似的事情?当然,可以编写一个 nexted 循环,但这看起来很慢,我尝试尽可能避免手动编码的循环,因为它们很慢。

谢谢!

最佳答案

假设您有“X”(所有 eta 的列表),带有暗淡的颜色。 Nx1(我猜)和矩阵 H。H 是一个 NxG 矩阵,具有组的热编码。

你写的是这样的:

import numpy as np
from numpy import newaxis as na
import theano.tensor as T

X = T.vector()
H = T.matrix()

tmp = T.sum(X[:, na] * H, axis=0)
O = T.sum(T.log(tmp))

x = np.array([5, 10, 10, 0.5, 5, 0.5])
# create a 1-hot encoding
g = np.array([1, 2, 2, 0, 1, 0])
h = np.zeros(shape=(len(x), 3))
for i,j in enumerate(g):
h[i,j] = 1.0

O.eval({X:x, H: h})

只要每个点至少有一个 eta(或者 -inf),该方法就应该有效。

关于python - Theano - 按组求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37784296/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com