Существует ли библиотека или методология Python, которая создает хорошие нелинейные квантили для двухмерных данных? [зак ⇐ Python

Программы на Python
Anonymous
Существует ли библиотека или методология Python, которая создает хорошие нелинейные квантили для двухмерных данных? [зак

Сообщение Anonymous »

Я хочу разделить свои нелинейные наборы данных на квантили с помощью Python.
Я хочу построить графики с помощью
  • квантилей линии, которые не пересекаются
  • а также имеют свою индивидуальную форму, соответствующую данным (а не просто одну и ту же строку, 10 раз разделенную % стандартной ошибки)
Пример того, что я собираюсь здесь сделать:
идеальный график квантилей
I Я попробовал smf.quantreg("y ~ X", filtered_data) с smf, импортированным из statsmodels.formula.api.
Это создает линейные графики, когда не все мои наборы данных являются линейными. Из-за характера линейности все линии в конечном итоге пересекаются, что приводит к неправильным расчетам процентилей для некоторых точек (как вы можете видеть в квантиле 50% и 60% справа).

smf. попытка построения графика Quantreg

Код: Выделить всё

model = smf.quantreg("y ~ X", filtered_data).fit(
q=q,
max_iter=2000,
p_tol=1e-06,
)
Я также пробовал методы keras и tensorflow из -https://colab.research.google.com/githu ... ison.ipynb - которые привело к большей нелинейности, но линии часто пересекаются.
Попытка построения графика keras

Код: Выделить всё

def tilted_loss(q, y, f):
e = (y - f)
return tf.reduce_mean(tf.maximum(q * e, (q - 1) * e), axis=-1)

def keras_pred(x_train, train_labels, x_test, q):
# Set input_dim for the number of features.
if len(x_train.shape) == 1:
input_shape = (1,)
else:
input_shape = (x_train.shape[1],)

model = Sequential()
model.add(Input(shape=input_shape))
model.add(Dense(units=10, activation='relu'))
model.add(Dense(units=10, activation='relu'))
model.add(Dense(1))

model.compile(loss=lambda y, f: tilted_loss(q, y, f), optimizer='adadelta')
model.fit(x_train, train_labels, epochs=EPOCHS, batch_size=BATCH_SIZE,
verbose=0)

# Predict the quantile
return model.predict(x_test)

preds.loc[preds.method == 'keras', 'pred'] = np.concatenate(
[keras_pred(x_train_expanded, train_labels, x_test_expanded, q)
for q in QUANTILES])
Будем очень благодарны за любую помощь, большое спасибо!!!


Подробнее здесь: https://stackoverflow.com/questions/790 ... antiles-fo

Вернуться в «Python»