Giter Club home page Giter Club logo

Comments (2)

cerlymarco avatar cerlymarco commented on May 25, 2024 1

Hi, I have difficulties understanding what you are trying to achieve... However, I can say to you that using the summary functionality you can get:

The keys are the integer map of each node. The values are dicts containing information for that node:

  • 'col' (^): column used for splitting;
  • 'th' (^): threshold value used for splitting in the selected column;
  • 'loss': loss computed at node level. Weighted sum of children' losses if it is a splitting node;
  • 'samples': number of samples in the node. Sum of children' samples if it is a split node;
  • 'children' (^): integer mapping of possible children nodes;
  • 'models': fitted linear models built in each split. Single model if it is leaf node;
  • 'classes' (^^): target classes detected in the split. Available only for LinearTreeClassifier.
  • (^): Only for split nodes. (^^): Only for leaf nodes.

If you want to get coef_ and intercept_, simply querying the interested 'models' inside the summary does the job.
As an additional resource, I can suggest this post where coef_ are used

from linear-tree.

jckkvs avatar jckkvs commented on May 25, 2024

Thanks.
Eventually I want to generate a formula below semi-automatically.
y = 3 * x + 0.3 if x <= 0,
y = 2 * x - 0.5 if 0.2 < x <= 0.5,
y = 0.5*x +0.1 if 0.5 =x

When there is only one explanatory variable, these formulas are explainable and can be used as white-box AI.

To create this formula, I need a threshold, a coefficient, and an intercept, so I created the following code. However, this code can't handle complex trees, so I wanted to ask if the library you created already has such a feature.

def func(x, result):
    threshold = result.get("threshold", None)
    coef_ = result.get("coef_", None)
    intercept_ = result.get("intercept_", None)

    if threshold is None:
        coef_ = coef_
        intercept_ = intercept_
    else:
        if x <= threshold:
            coef_ = coef_[0]
            intercept_ = intercept_[0]
        elif x > threshold:
            coef_ = coef_[1]
            intercept_ = intercept_[1]
        else:
            raise ValueError    
    y = x * coef_ + intercept_    
    return y

from linear-tree.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.