Я создаю алгоритм дерева решений
У меня есть 4 объекта с 4 возможными значениями на каждом ('a', 'b', 'c', 'd')
Y (прогнозируемые значения) может быть 0 или 1 или 2
У меня есть одна функция для построения дерева, затем я использую функцию прогнозирования (я создаю ее на данный момент, поэтому я не публикую код) для прогнозирования значений на основе этого дерева решений.
Вот прототип моей функции
def dt_predict(x, features_label, tree):
, где:
x
- пандх DataFrameсодержит все данные (4 столбца по 4 возможных значения в каждом) features_label
- заголовок каждого столбца данных tree
- обученное дерево решений a (вид связанного спискакласса узла)
node
class:
class node:
def __init__(self):
self.level = 0
self.option = ""
self.feature = ""
self.is_leaf_node = False
self.is_pure_node = False
self.max_value_item = ""
self.max_value = 0
self.possible_values_names = []
self.possible_values_nodes = []
Все это должно было дать вам общее представление о проблеме.Теперь моя проблема не в том, как предсказать то или иное значение, а в том, как отслеживать индексы.
В моей функции прогнозирования я прохожу все дерево (узлы) и последовательно уменьшаю x
DataFrame я передаю в качестве аргумента.Поэтому у меня всегда есть индекс каждой строки данных, но я не знаю, как создавать и вставлять в новую панду dataFrame значение y и индекса.
def dt_predict(x, features_label, tree):
if tree.is_leaf_node == True:
#return new pandas dataframe with x indexes and tree.max_value_item (in this case 0 or 1 or 2)
#loop through possible values, filter x and call dt_predict recursively
...
Пожалуйста, дайте мне знать, если это не ясно.
РЕДАКТИРОВАТЬ:
, чтобы быть более понятным, представьте, что у меня есть
index | x1 | x2 | x3 | x4 |
123 | a | c | a | b |
...
35 | b | d | a | a |
Я хочу, чтобы это было:
index | Y |
123 | 2 |
...
35 | 2 |