Можно ли использовать логистическую регрессию c для переменных, содержащих списки? - PullRequest
1 голос
/ 09 мая 2020

Я новичок в машинном обучении, и мне было интересно, могут ли определенные алгоритмы / модели (ie. Logisti c regression) обрабатывать списки как значения для своих переменных. До сих пор я всегда использовал довольно стандартные наборы данных, где у вас есть пара переменных, связанных значений, а затем классификация для этого набора значений (см. Пример 1). Однако теперь у меня есть аналогичный набор данных, но со списками для некоторых переменных (см. Пример 2). Могут ли с этим справиться модели регрессии logisti c, или мне нужно будет сделать какое-то извлечение признаков, чтобы преобразовать этот набор данных в обычный набор данных, как в примере 1?

Пример 1 (нормальный):

+---+------+------+------+-----------------+
|   | var1 | var2 | var3 | classification  |
+---+------+------+------+-----------------+
| 1 |    5 |    2 |  526 |               0 |
| 2 |    6 |    1 |  686 |               0 |
| 3 |    1 |    9 |  121 |               1 |
| 4 |    3 |   11 |   99 |               0 |
+---+------+------+------+-----------------+

Пример 2 (списки):

+-----+-------+--------+---------------------+-----------------+--------+
|     | width | height |       hlines        |      vlines     |  class | 
+-----+-------+--------+---------------------+-----------------+--------+
| 1   | 115   | 280    | [125, 263, 699]     | [125, 263, 699] |  1     |      
| 2   | 563   | 390    | [11, 211]           | [156, 253, 399] |  0     |   
| 3   | 523   | 489    | [125, 255, 698]     | [356]           |  1     |      
| 4   | 289   | 365    | [127, 698, 11, 136] | [458, 698]      |  0     |       
| ... | ...   | ...    | ...                 | ...             | ...    |      
+-----+-------+--------+---------------------+-----------------+--------+

Чтобы предоставить некоторый дополнительный контекст по моей конкретной проблеме c. Я пытаюсь изобразить рисунки. Чертежи имеют ширину и высоту (обычные переменные), но чертежи также имеют, например, набор горизонтальных и вертикальных линий (представленных в виде списка их координат на соответствующей оси). Это то, что вы видите в примере 2. Фактический набор данных, который я использую, еще больше, он также содержит переменные, которые содержат списки, содержащие толщину для каждой строки, списки, содержащие расширение для каждой строки, списки, содержащие цвета пробелов между линии, et c. В конце концов, я хотел бы в своей логистической c регрессии понять, в результате чего получаются красивые рисунки. Например, если слишком много линий слишком близко, рисунок не будет красивым. Модель должна улавливать эти «характеристики» того, что делает рисунок хорошим и плохим.

Я не включил их, так как способ настройки этих данных немного сбивает с толку, и если я смогу решить свой вопрос для вышеуказанного набора данных, я чувствую, что могу использовать принцип этого решения для оставшихся набор данных. Однако, если вам нужна дополнительная (полная) информация, не стесняйтесь спрашивать!

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 09 мая 2020

Нет, он не может напрямую обрабатывать такую ​​структуру ввода. Вход должен быть однородным 2D-массивом. Что вы можете сделать, так это придумать новые функции, которые захватывают некоторую важную информацию, содержащуюся в списках. Например, для списков, которые содержат координаты линий вдоль оси (кроме самих фактических значений), одним может быть интервал между линиями, или общее количество линий, или также некоторая статистика, такая как среднее положение и т. Д. c.

Таким образом, можно решить эту проблему с помощью разработки функций . Фактически, это то, с чем приходится иметь дело в большинстве случаев. Во многих задачах машинного обучения у вас могут быть не только переменные, которые описывают уникальный аспект или функцию каждой из выборок данных, но также многие из них могут быть агрегатами из других функций или образцов. группы, что может быть единственным способом go, если вы хотите учитывать определенные источники данных.

0 голосов
/ 10 мая 2020

Вау, отличный вопрос. Я никогда не думал об этом, но когда я видел ответы других людей, я должен был согласиться на 100%. Преобразуйте списки в фрейм данных и запустите свой код на этом объекте.

import pandas as pd
data = [["col1", "col2", "col3"], [0, 1, 2],[3, 4, 5]]
column_names = data.pop(0)
df = pd.DataFrame(data, columns=column_names)
print(df)

Результат:

   col1  col2  col3
0     0     1     2
1     3     4     5

Вы можете легко выполнить любую множественную регрессию для полей / функций данных рамка, и вы получите то, что вам нужно. См. Ссылку ниже, чтобы узнать, как начать работу.

https://pythonfordatascience.org/logistic-regression-python/

Отправьте ответ, если у вас есть дополнительные вопросы, связанные с этим. Или начните новый пост, если у вас есть похожие, но не связанные вопросы.

...