Это работает как ожидалось. ORDER BY
сначала упорядочивает вашу таблицу с помощью столбца n312
, а затем с помощью столбца n309
. Предположим, что у вас есть таблица, как показано ниже:
n312 | n309
-----------
2.0 | 1.0
5.0 | 2.0
2.0 | 3.0
3.0 | 2.0
5.0 | 1.0
Затем «ORDER BY» упорядочит вашу таблицу, как показано ниже:
n312 | n309
-----------
5.0 | 2.0
5.0 | 1.0
3.0 | 2.0
2.0 | 3.0
2.0 | 1.0
Сначала заказывает ваши строки на n312
. Если для двух строк n312
имеют одно и то же значение (например, строка 1 и строка 2), то он будет упорядочивать их со значением столбца n309
.
Если вы хотите что-то вроде:
n312 | n309
-----------
5.0 | 3.0
5.0 | 2.0
3.0 | 2.0
2.0 | 1.0
2.0 | 1.0
Тогда вам нужно что-то подобное, как показано ниже:
SELECT t1.n312, t2.n309 from
(select row_number() as id, n312 from t ORDER BY n312) as t1
JOIN
(select row_number() as id, n309 from t ORDER BY n309) as t2
WHERE t1.id = t2.id;
Идея состоит в том, чтобы упорядочить таблицу отдельно с обоими столбцами вначале, а затем выбрать упорядоченные столбцы.
Вы можете настроить функции потерь в scikit learn, для этого вам нужно применить фабрику make_scorer
к вашей пользовательской функции потерь, например:
from sklearn.metrics import make_scorer
score = make_scorer(my_custom_loss_func, greater_is_better=False)
В вашем конкретном случае со случайными лесами, хотя вы можете ' t настроить критерий, что вы можете сделать, это оптимизировать гиперпараметры с помощью GridSearchCV
, и там вы сможете использовать свои собственные потери.