Почему значение истинности массива Python с более чем одним элементом неоднозначно?

У меня два вопроса. Во-первых, я хочу изобразить прогнозируемую функцию выживания. Код выглядит следующим образом:

      from sksurv.preprocessing import OneHotEncoder
from sksurv.datasets import load_veterans_lung_cancer
from sksurv.linear_model import CoxPHSurvivalAnalysis
import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt


data_x, data_y = load_veterans_lung_cancer()
data_y


data_x_numeric = OneHotEncoder().fit_transform(data_x)



estimator = CoxPHSurvivalAnalysis()
estimator.fit(data_x_numeric, data_y)


x_new = pd.DataFrame.from_dict({
    1: [65, 0, 0, 1, 60, 1, 0, 1],
    2: [65, 0, 0, 1, 60, 1, 0, 0],
    3: [65, 0, 1, 0, 60, 1, 0, 0],
    4: [65, 0, 1, 0, 60, 1, 0, 1]},
     columns=data_x_numeric.columns, orient='index')

pred_surv = estimator.predict_survival_function(x_new)

Когда я хочу построить результат:

      
time_points = np.arange(1, 1000)
for i, surv_func in enumerate(pred_surv):
    plt.step(time_points, surv_func(time_points), where="post",
             label="Sample %d" % (i + 1))
plt.ylabel("est. probability of survival $\hat{S}(t)$")
plt.xlabel("time $t$")
plt.legend(loc="best")

Я получаю следующую ошибку:

      ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Как я могу решить эту проблему?

Второй вопрос: как результаты объекта pred_surv могут быть переданы в фрейм данных?

0 ответов

Другие вопросы по тегам