CoxPHFitter中的特征(协变量)选择,生命线生存分析

时间:2018-11-25 12:17:08

标签: python feature-selection survival-analysis cox-regression lifelines

我正在Python中使用此实现的模型进行生存分析:

从生命线导入CoxPHFitter

不幸的是,我无法(我不知道如何)遍历所有协变量(特征)以单独运行回归以进行特征选择并保存其结果。我正在尝试以下脚本:

`def fit_and_score_features2(X):
    y=X[["Status","duration_yrs"]]
    X.drop(["duration_yrs", "Status"], axis=1, inplace=True)
    n_features = X.shape[1]
    scores = np.empty(n_features)
    m = CoxPHFitter()

    for j in range(n_features):
       Xj = X.values[:, j:j+1]
       Xj=pd.merge(X, y,  how='right', left_index=True, right_index=True)
       m.fit(Xj, duration_col="duration_yrs", event_col="Status", show_progress=True)
       scores[j] = m._score_
    return scores`

不幸的是,它返回了此错误:

  

ValueError跟踪(最近的呼叫   最后)在()         1#尝试上述功能   ----> 2分= fit_and_score_features2(样本)         3个pd.Series(分数,index = features.columns).sort_values(升序= False)

     fit_and_score_features2(X)中的

       15 Xj = pd.merge(X,y,how ='right',left_index = True,right_index = True)        16 m.fit(Xj,duration_col =“ duration_yrs”,event_col =“ Status”,show_progress = True)   ---> 17分[j] = m。得分        18分得分

     

ValueError:设置具有序列的数组元素。

谢谢。

1 个答案:

答案 0 :(得分:1)

我认为我可以在您的帮助下进行调试(@ Cam.Davidson.Pilon)。非常感谢。我认为这是正确的脚本:

`def fit_and_score_features2(X):
   y=X[["Status","duration_yrs"]]
   X.drop(["duration_yrs", "Status"], axis=1, inplace=True)
   n_features = X.shape[1]
   scores = np.empty(n_features)
   m = CoxPHFitter()

   for j in range(n_features):
       Xj = X.iloc[:, j:j+1]
       Xj=pd.merge(Xj, y,  how='right', left_index=True, right_index=True)
       m.fit(Xj, duration_col="duration_yrs", event_col="Status", show_progress=True)
       scores[j] = m.score_
   return scores`