Группировка линий в полосыPython

Программы на Python
Ответить
Anonymous
 Группировка линий в полосы

Сообщение Anonymous »

Небольшое введение
У меня есть данные (ссылка внизу): по оси Y — оценка, по оси X — положение для разных этикетки. Теперь я хочу знать, есть ли один ярлык, который «значительно» отличается от других и «фона». Я играл с этим последние несколько недель, но, похоже, так и не понял (использовал водораздел, DBscan, LOF и еще пару алгоритмов). Уверен, что есть разумный способ сделать это :).
Обратите внимание, это всего лишь один из многих видов сюжетов, и мы не всегда можем предполагать, что k, так как у некоторых есть выбросы, а у других нет.
Давайте посмотрим на график, чтобы получить представление:
Изображение

Здесь мы видим, что этот оливковый цвет отклоняется (максимальный балл обведен красным):
  • Отклоняется от фона (большинство оценок, ожидайте, что первый пик находится в пределах 0,1–0,3)
    < li>Все еще однозначно поднимается выше остальные останавливаются на уровне ~0,6, по сути являясь локальным выбросом в области глобальных выбросов.
    Теперь мы можем установить все виды пороговых значений, например, минимальный балл, который будет глобальным выбросом, и минимальную разницу между высшим баллом. и вторая оценка для другого ярлыка. Но это все так субъективно.
Использование DBSCAN
Я хотя использовал DBscan, который работает очень хорошо:
Изображение
но в данных, похоже, есть некоторые четкое горизонтальное скопление «полос» линии, однако я не могу найти способ сгруппировать такой узор.
Описание кластеров полос
Я подумал можно было бы сгруппировать что-то вроде изображения ниже. Следует отметить, что, поскольку точек очень много, на графиках показаны только 200 верхних точек для каждого ярлыка. Поэтому возможно, что координаты xy присутствуют не во всех позициях. Так что, возможно, мы больше не можем называть их «линиями». Что касается выброса, я, вероятно, могу просто проверить:
  • не совпадает ли «верхняя» полоса с нижней полосой
    < li>содержит ли верхняя полоса только одну метку
    Изображение
Данные
Я поместил данные для графика, показанного на Pastebin, часть их здесь:

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

28  1   0.16
17  1   0.14705882352941177
12  1   0.16
54  1   0.16666666666666666
2   1   0.18
8   1   0.11
42  1   0.14705882352941177
16  1   0.14705882352941177
44  1   0.19607843137254902
1   1   0.4
36  1   0.16
55  1   0.12745098039215685
50  1   0.12745098039215685
22  1   0.16666666666666666
46  1   0.1568627450980392
5   1   0.13
...
где первый столбец — это метка (цвет), позиция второго столбца (ось X), а последний столбец — оценка (ось Y)
Большое спасибо, очень интересно, есть ли какие-нибудь классные идеи по этому поводу. Ломаю голову об этом последние пару недель :)

Подробнее здесь: https://stackoverflow.com/questions/793 ... s-in-bands
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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