Там x[0] - это вероятности для нулевого класса, модель же выдает вероятности для двух классов. То есть если вероятность нулевого класса меньше 0.5, значит класс первый предсказывается. То есть True == 1 и наоборот. Поэтому ошибки нет.
Хм, чего то про такое не слышал вероятность там может быть от 0 до 1, больше 0,5 - "1", иначе "0" по умолчанию в бинарной классификации. Хотя переводчик переводит странно: "
Один объект — одномерный numpy.ndarray с вероятностями для каждого класса.
"
Но, как тогда получить вероятность для класса "1"? Всё же не может быть в одномерном массиве отдельно вероятности для каждого класса, или я чего то не понимаю...
Хм, чего то про такое не слышал вероятность там может быть от 0 до 1, больше 0,5 - "1", иначе "0" по умолчанию в бинарной классификации. Хотя переводчик переводит странно: "
Один объект — одномерный numpy.ndarray с вероятностями для каждого класса.
"
Но, как тогда получить вероятность для класса "1"? Всё же не может быть в одномерном массиве отдельно вероятности для каждого класса, или я чего то не понимаю...
Если вероятность для класса 0 < 0.5, то значит предсказывается класс 1. Тот код просто переводит вероятности обратно в метки классов для тестера. Там все норм.
Maxim Dmitrievsky #: Нет, я про бай и селлы в вашем датасете, что есть ноль и что есть 1. Покупка или продажа.
Там разметка по финансовому результату уже. В столбец close я поместил исход от сделки. Т.е. для обучения не важно - покупка или продажа.
Maxim Dmitrievsky #: Если вероятность для класса 0 < 0.5, то значит предсказывается класс 1. Тот код просто переводит вероятности обратно в метки классов для тестера. Там все норм.
Я не хочу показаться навязчивым, но всё же, три варианта: 1. Я всё время делал не правильно, полагая, что оценивается вероятность именно класса "1" в CatBoost. 2. Я не понимаю Ваш код. 3. Вы ошибаетесь, полагая, что вероятность меньше 0,5 надо классифицировать как "1".
Там разметка по финансовому результату уже. В столбец close я поместил исход от сделки. Т.е. для обучения не важно - покупка или продажа.
Я не хочу показаться навязчивым, но всё же, три варианта: 1. Я всё время делал не правильно, полагая, что оценивается вероятность именно класса "1" в CatBoost. 2. Я не понимаю Ваш код. 3. Вы ошибаетесь, полагая, что вероятность меньше 0,5 надо классифицировать как "1".
Ничего не понял, в столбце Close должны быть цены закрытия.
Общая вероятность всегда равна единице. Если вероятность одного из классов меньше 0.5, значит предсказывается другой класс.
Можно - загружу. Хотя для мака и есть поддержка через командную строку...
Maxim Dmitrievsky #: потому что вероятность 1-го класса 0.6
predict_proba p
[[0.748641230.25135877]
[0.810975950.18902405]
[0.814770420.18522958]
...
[0.833478620.16652138]
[0.842731860.15726814]
[0.846173440.15382656]]
Пока не принтанул - не мог понять - в консольной версии в этом плане есть отличие.
Тогда получается всё логично, и я закомментировал у себя код переворота, оставив логику разметки
#//-------Восстанавливаю перевернутые ранее метки #if pred_meta>0.5:pred_meta=0#else :pred_meta=1#if pred>0.5:pred=0#else :pred=1#//-------Делаем переразметку и считаем балансif pred_meta==1:#Мета модель детектировала примеры как класс "1"if pred < 0.5 and Target_100<0.0:
meta_labels[i] = 1if pred < 0.5 and Target_100>0.0:
meta_labels[i] = 0if pred >= 0.5 and Target_100>0.0:
meta_labels[i] = 1
report.append(report[-1]+Target_100)
if pred >= 0.5 and Target_100<0.0:
meta_labels[i] = 0
report.append(report[-1]+Target_100)
if pred_meta==0:#Мета модель детектировала примеры как класс "0"if pred < 0.5 and Target_100<0.0:
meta_labels[i] = 1if pred < 0.5 and Target_100>0.0:
meta_labels[i] = 0if pred >= 0.5 and Target_100>0.0:
meta_labels[i] = 1if pred >= 0.5 and Target_100<0.0:
meta_labels[i] = 0
Хм, чего то про такое не слышал вероятность там может быть от 0 до 1, больше 0,5 - "1", иначе "0" по умолчанию в бинарной классификации. Хотя переводчик переводит странно:
"
"
Но, как тогда получить вероятность для класса "1"? Всё же не может быть в одномерном массиве отдельно вероятности для каждого класса, или я чего то не понимаю...
Может в вашем датасете метки перевернутые
"1" - правильная сделка/прибыльная/хорошая. А надо иначе?
"1" - правильная сделка/прибыльная/хорошая. А надо иначе?
Хм, чего то про такое не слышал вероятность там может быть от 0 до 1, больше 0,5 - "1", иначе "0" по умолчанию в бинарной классификации. Хотя переводчик переводит странно:
"
"
Но, как тогда получить вероятность для класса "1"? Всё же не может быть в одномерном массиве отдельно вероятности для каждого класса, или я чего то не понимаю...
Нет, я про бай и селлы в вашем датасете, что есть ноль и что есть 1. Покупка или продажа.
Там разметка по финансовому результату уже. В столбец close я поместил исход от сделки. Т.е. для обучения не важно - покупка или продажа.
Если вероятность для класса 0 < 0.5, то значит предсказывается класс 1. Тот код просто переводит вероятности обратно в метки классов для тестера. Там все норм.
Я не хочу показаться навязчивым, но всё же, три варианта:
1. Я всё время делал не правильно, полагая, что оценивается вероятность именно класса "1" в CatBoost.
2. Я не понимаю Ваш код.
3. Вы ошибаетесь, полагая, что вероятность меньше 0,5 надо классифицировать как "1".
Там разметка по финансовому результату уже. В столбец close я поместил исход от сделки. Т.е. для обучения не важно - покупка или продажа.
Я не хочу показаться навязчивым, но всё же, три варианта:
1. Я всё время делал не правильно, полагая, что оценивается вероятность именно класса "1" в CatBoost.
2. Я не понимаю Ваш код.
3. Вы ошибаетесь, полагая, что вероятность меньше 0,5 надо классифицировать как "1".
Ничего не понял, в столбце Close должны быть цены закрытия.
Общая вероятность всегда равна единице. Если вероятность одного из классов меньше 0.5, значит предсказывается другой класс.
Ничего не понял, в столбце Close должны быть цены закрытия.
Посмотрите код, что я приложил. Там может быть понятней. У меня классификация не на каждом баре происходит.
Общая вероятность всегда равна единице. Если вероятность одного из классов меньше 0.5, значит предсказывается другой класс.
В коде при вероятности 0,4 получаете класс "1". Почему?
Посмотрите код, что я приложил. Там может быть понятней. У меня классификация не на каждом баре происходит.
В коде при вероятности 0,4 получаете класс "1". Почему?
Можно зазипованный датасет? у меня нет рара
потому что вероятность 1-го класса 0.6
В целом, тот алгоритм должен принимать данные именно так, как там сделано.Можно зазипованный датасет? у меня нет рара
Можно - загружу. Хотя для мака и есть поддержка через командную строку...
потому что вероятность 1-го класса 0.6
Пока не принтанул - не мог понять - в консольной версии в этом плане есть отличие.
Тогда получается всё логично, и я закомментировал у себя код переворота, оставив логику разметки
Можно зазипованный датасет?
Ссылка