Выбор характеристик (ковариат) в CoxPHFitter, Анализ выживаемости жизненных линий
Я использую эту реализованную модель в 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 (последний вызов был последним) в () 1 # Попытка функции выше ----> 2 баллов = fit_and_score_features2(образец) 3 pd.Series(баллы, 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: установка элемента массива с последовательностью.
Заранее спасибо.
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`
Для Lifeline версии 0.27.0 замените m.score_ на m.score(Xj), если вы хотите узнать логарифмическую вероятность, и m.score(Xj,scoring_method='concordance_index'), если вы хотите узнать индекс соответствия.