4

我在 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 Traceback (most recent call last) in () 1 #尝试上面的函数----> 2 scores = fit_and_score_features2(sample) 3 pd.Series(scores, index=features.columns).sort_values(ascending=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:使用序列设置数组元素。

先感谢您。

4

1 回答 1

2

我认为我能够在您的帮助下进行调试(@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`
于 2018-11-25T16:29:00.360 回答