Logo Search packages:      
Sourcecode: rpart version File versions  Download package

func_table.h

/* SCCS @(#)func_table.h      1.5 06/06/01  */
/*
** The table of implimented splitting functions
**
**  init_split   - Will be called before a tree is started.  May do very
**                  little, but empirical Bayes like methods will need to set
**                  some global variables.
**  choose_split - function to find the best split
**  eval         - function to calculate the response estimate and risk
**  error        - Function that returns the prediction error.
**  num_y        - Number of columns needed to represent y (usually 1)
*/
#ifndef FLOAT
#define FLOAT float   /*see comments in rpart.h */
#endif

extern int anovainit( int n,      double*y[],  int maxcat, char **error, 
                  double *parm, int *size,   int who,    double *wt);
extern int poissoninit(int n,      double*y[],  int maxcat, char **error, 
                   double *parm, int *size,   int who,    double *wt);
extern int    giniinit(int n,      double*y[],  int maxcat, char **error, 
                   double *parm, int *size,   int who,    double *wt);
extern int usersplit_init(int n,     double*y[],  int maxcat, char **error, 
                   double *parm, int *size,   int who,    double *wt);

extern void anovass   (int n,     double *y[], double *value, double *risk,
                                  double *wt);
extern void poissondev(int n,     double *y[], double *value, double *risk,
                                  double *wt);
extern void ginidev   (int n,     double *y[], double *value, double *risk,
                                  double *wt);
extern void usersplit_eval(int n,     double *y[], double *value, double *risk,
                           double *wt);

extern void anova(    int n,    double *y[],     FLOAT *x,     int nclass, 
                      int edge, double *improve, FLOAT *split, int *csplit, 
                      double myrisk,             double *wt);
extern void poisson(  int n,    double *y[],     FLOAT *x,     int nclass, 
                      int edge, double *improve, FLOAT *split, int *csplit, 
                      double myrisk,             double *wt);
extern void gini(     int n,    double *y[],     FLOAT *x,     int nclass, 
                      int edge, double *improve, FLOAT *split, int *csplit, 
                      double myrisk,             double *wt);
extern void usersplit(int n,    double *y[],     FLOAT *x,     int nclass, 
                      int edge, double *improve, FLOAT *split, int *csplit, 
                      double myrisk,             double *wt);

extern double anovapred  (double *y, double *yhat);
extern double  ginipred  (double *y, double *yhat);
extern double poissonpred(double *y, double *yhat);
extern double usersplit_pred(double *y, double *yhat);
    
static struct {
      int  (*init_split)();
      void (*choose_split)();
      void (*eval)();
      double (*error)();
        } func_table [] =
             {{anovainit,   anova,   anovass,    anovapred},
              {poissoninit, poisson, poissondev, poissonpred},
              {giniinit, gini, ginidev, ginipred},
              {usersplit_init, usersplit, usersplit_eval, usersplit_pred}
             };

#define NUM_METHODS 4  /*size of the above structure */

Generated by  Doxygen 1.6.0   Back to index