Python л oop - коэффициент Джини - PullRequest
0 голосов
/ 11 апреля 2020

Я новичок в Python и получил небольшую проблему с l oop. Моя цель - сгенерировать коэффициенты GINI для различных преобразований переменных.

Мой код для GINI

def Gini(y_true, y_pred):
    # check and get number of samples
    assert y_true.shape == y_pred.shape
    n_samples = y_true.shape[0]

    # sort rows on prediction column 
    # (from largest to smallest)
    arr = np.array([y_true, y_pred]).transpose()
    true_order = arr[arr[:,0].argsort()][::-1,0]
    pred_order = arr[arr[:,1].argsort()][::-1,0]

    # get Lorenz curves
    L_true = np.cumsum(true_order) / np.sum(true_order)
    L_pred = np.cumsum(pred_order) / np.sum(pred_order)
    L_ones = np.linspace(1/n_samples, 1, n_samples)

    # get Gini coefficients (area between curves)
    G_true = np.sum(L_ones - L_true)
    G_pred = np.sum(L_ones - L_pred)

    # normalize to true Gini coefficient
    return G_pred/G_true

У меня есть фрейм данных с Age, но я бы хотел немного его трансформировать , вот один из преобразований

df_credit['Age_t'] = df_credit['Age'].apply(lambda x: abs(x-36) if x<=36 else abs(x-36)*1/3)

, но я хотел бы проверить, какие оценки GINI я получу, если я использую разные целые числа в функции ABS и разные коэффициенты умножения (теперь это 1/3).

Вот простой GINI, который я вычисляю

Gini(df_credit['Default'],df_credit['Age_t2'])

Знаете ли вы, как перебирать различные целые числа в ABS и множитель, чтобы получить все GINI [в виде фрейма данных]?

Спасибо

...