0

我们正在研究与生存分析相关的问题。我们已经实现了 Cox 比例风险模型和加速故障时间算法。现在我们想看看协变量如何随时间变化。所以我们决定AalenAdditiveFitterlifelines库中实现。这是一个虚拟数据。数据形状为(1341799, 4).

           Gender        Disability_level       Time_to_event     Event
    
    1      Female             Mild                   50            0 
    2       Male            Moderate                 70            1
    3       Male             Severe
    .
    .
    .
 1341799   Female             Mild                   45            1

现在,我们面临的问题与内存有关。一个热编码后的数据形状变为(1341799, 15)。但是,当我们尝试将数据拟合到模型中时,列数只会增加到1904from15并且数据会被转置。

这是我们尝试运行的代码。

from lifelines import AalenAdditiveFitter

aaf = AalenAdditiveFitter(coef_penalizer=1.0, fit_intercept=False)

print("DF shape: ", df.shape)

aaf.fit(df, 'Time_to_event', 'Event')

这是我们得到的错误。

DF shape: (1341799, 15)
MemoryError: Unable to allocate 19.0 GiB for an array with shape
(1904, 1341799) and data type float64

当我们减少行数(比如 50k 行)时,代码可以正常工作。但这不符合我们的目的。如何解决这个问题?

另外,任何人都可以解释引擎盖下发生了什么吗?有没有办法解决这个问题?是否有任何其他方法可用于捕获协变量在整个时间内的可变性?

您可以使用以下代码生成我们的数据。

import numpy as np
import pandas as pd

gender = ["Male", "Female", "Others", "Unknown"]
disable = ["Mild", "Moderate", "Severe", "Level1", "Level2", "Level3", "Level4", "Level5", "Level6"]

data = []

for i in range(0, 1341799):
    g = np.random.choice(gender)
    d = np.random.choice(disable)
    t = np.random.randint(30, 1000)
    e = np.random.choice([0, 1])
    
    data.append([g, d, t, e])

df = pd.DataFrame(data, columns=['Gender', 'Disability_level', 'Time_to_event', 'Event'])
4

0 回答 0