Можно ли использовать пользовательский классификатор дерева решений в Scikit-learn? - PullRequest
1 голос
/ 27 января 2020

У меня есть предопределенное дерево решений, которое я построил на основе разбивки на основе знаний, которое я хочу использовать для прогнозирования. Я мог бы попытаться реализовать классификатор дерева решений с нуля, но тогда я не смог бы использовать встроенные функции Scikit, такие как предикат. Есть ли способ преобразовать мое дерево в pmml и импортировать этот pmml, чтобы сделать мой прогноз с помощью scikit-learn? Или мне нужно сделать что-то совершенно другое? Моя первая попытка состояла в том, чтобы использовать «фальшивые обучающие данные», чтобы заставить алгоритм построить дерево так, как мне нравится, это закончится большой работой, потому что мне нужно создавать разные деревья в зависимости от ввода пользователя.

1 Ответ

1 голос
/ 28 января 2020

Вы можете создать свой собственный классификатор дерева решений, используя Sklearn API. Пожалуйста, прочтите эту документацию , следуя типам классов предикторов. Как объяснено в этом разделе , вы можете построить оценщик, следуя шаблону:

import numpy as np
from sklearn.base import BaseEstimator, ClassifierMixin
from sklearn.utils.validation import check_X_y, check_array, check_is_fitted
from sklearn.utils.multiclass import unique_labels
from sklearn.metrics import euclidean_distances

class TemplateClassifier(BaseEstimator, ClassifierMixin):
    def __init__(self, demo_param='demo'):
        self.demo_param = demo_param

    def fit(self, X, y):
        # Two paths. Just return the object, or implement here your decision rules
        return self

    def predict(self, X):

        # Check is fit had been called
        check_is_fitted(self)

        # Input validation
        X = check_array(X)

        # Change this to your decision tree "rules"
        closest = np.argmin(euclidean_distances(X, self.X_), axis=1)
        return self.y_[closest]
...