Я новичок в 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 [в виде фрейма данных]?
Спасибо