Esempio n. 1
0
 def assess(self, y, p_y, return_dist=False, check_input=True):
     '''\n
     Function: 执行模型评估
     
     Note: 拟合后关于训练集的accuracy和cost已保存在内部属性中,
           通过.score和.cost查看
     
     Parameters
     ----------
     y: 观测值向量,Series类型
     p_y: 预测值向量,Series类型
     return_dist: 是否返回预测分布,bool类型,默认False
     check_input: 是否进行输入校验,bool类型,默认值True
     ----------
     
     Returns
     -------
     0: 准确率,float类型
     1: 预测分布,DataFrame类型
     -------
     '''
     #输入校验
     if check_input == True:
         y = self.check_input_y_(y)
         p_y = self.check_input_y_(p_y, 'p_y')
         check_index_match(y, p_y, 'y', 'p_y')
     #返回准确率和预测分布
     return stats.accuracy(y, p_y, return_dist, self.classes)
 def assess(self,y,p_y,mode=None):
     '''\n
     Function: 使用输入的观测值和预测值进行模型评估
     
     Notes: 注意数据集的数据类型,分类首选类型str,回归首选类型float64,
            拟合时数据集采用非首选类型可能会导致此处类型不匹配,建议提前转换
     
     Parameters
     ----------
     y:观测值,Series类型
     p_y:预测值,Series类型
     mode:模式,str类型,默认使用内部集成单元的属性,
          'c'->分类,'r'->回归
     ----------
     
     Returns
     -------
     0: 分类->准确率,回归->R方,float类型
     -------
     '''
     #校验参数
     if type(mode)==type(None):
         mode=self.units[0].tree.mode
     check_type('mode',type(mode),type(''))
     mode_list=['c','r']
     check_limit('mode',mode in mode_list,str(mode_list))
     y,continuity_y=self.unit_test.check_input_y_(y,name='y')
     p_y,continuity_p_y=self.unit_test.check_input_y_(p_y,name='p_y')
     check_index_match(y,p_y,'y','p_y')
     #分类模式求准确率,回归模式求R2
     if mode=='c':
         return stats.accuracy(y,p_y)
     elif mode=='r':
         return stats.r_sqr(y,p_y)
Esempio n. 3
0
 def assess(self, y, p_y, return_dist=False, check_input=True):
     '''\n
     Function: 使用输入的观测值和预测值进行模型评估
     
     Notes: 注意数据集的数据类型,分类首选类型str,回归首选类型float64,
            拟合时数据集采用非首选类型可能会导致此处类型不匹配,建议提前转换
     
     Parameters
     ----------
     y:观测值,Series类型
     p_y:预测值,Series类型
     return_dist: 是否返回预测分布,bool类型,默认False
     check_input: 是否进行输入校验,bool类型,默认值True
     ----------
     
     Returns
     -------
     0: 分类->准确率,回归->R方,float类型
     -------
     '''
     mode = self.mode
     #校验输入
     check_type('check_input', type(check_input), type(True))
     if check_input == True:
         y = self.check_input_y_(y, name='y', mode=mode)
         p_y = self.check_input_y_(p_y, name='p_y', mode=mode)
         check_index_match(y, p_y, 'y', 'p_y')
     #分类模式求准确率,回归模式求R2
     if mode == 'c':
         return stats.accuracy(y, p_y, return_dist, self.classes)
     elif mode == 'r':
         return stats.r_sqr(y, p_y)
Esempio n. 4
0
 def assess(self, y, pred_y, return_dist=False, check_input=True):
     '''\n
     Function: 使用输入的观测值和预测值进行模型评估
     
     Notes: 注意数据集的数据类型,分类首选类型str,回归首选类型float64,
            拟合时数据集采用非首选类型可能会导致此处类型不匹配,建议提前转换
     
     Parameters
     ----------
     y: 观测值,ndarray类型
     pred_y: 预测值,ndarray类型
     return_dist: 是否返回预测分布,bool类型,默认False
     check_input: 是否进行输入校验,bool类型,默认值True
     ----------
     
     Returns
     -------
     0: 分类->准确率,回归->R方,float类型
     -------
     '''
     check_type('check_input', type(check_input), type(True))
     if check_input == True:
         check_type('return_dist', type(return_dist), type(True))
         y = self.check_input_y_(y, 'y', transform=False)
         pred_y = self.check_input_y_(pred_y, 'pred_y', transform=False)
         check_index_match(y, pred_y, 'y', 'pred_y', only_len=True)
     if self.mode == 'c':
         return stats.accuracy(y, pred_y, return_dist, self.classes)
     else:
         return stats.r_sqr(y, pred_y)
Esempio n. 5
0
 def access(self, y, p_y, return_dist=False):
     check_type('return_dist', type(return_dist), type(True))
     y = self.check_input_y_(y)
     p_y = self.check_input_y_(p_y, 'p_y')
     check_index_match(y, p_y, 'y', 'p_y')
     classes = self.y_d_p['value'].values
     return stats.accuracy(y, p_y, return_dist, classes)
 def assess(self,y,p_y,mode=None):
     '''\n
     Function: 使用输入的观测值和预测值进行模型评估
     
     Notes: 注意数据集的数据类型,分类首选类型str,回归首选类型float64,
            拟合时数据集采用非首选类型可能会导致此处类型不匹配,建议提前转换
     
     Parameters
     ----------
     y:观测值,Series类型
     p_y:预测值,Series类型
     mode:模式,str类型,默认使用内部集成单元的属性,
          'c'->分类,'r'->回归
     ----------
     
     Returns
     -------
     0: 分类->准确率,回归->R方,float类型
     -------
     '''
     #校验参数
     if type(mode)==type(None):
         mode=self.mode
     check_type('mode',type(mode),type(''))
     mode_list=['c','r']
     check_limit('mode',mode in mode_list,str(mode_list))
     check_index_match(y,p_y,'y','p_y')
     #分类模式求准确率,回归模式求R2
     if mode=='c':
         return stats.accuracy(y.astype('str'),p_y.astype('str'))
     elif mode=='r':
         r_sqr=stats.r_sqr(y,p_y)
         if r_sqr<0:
             print('warning: R2 is less than 0, which means bad fitting,'+
                   '\ntry to reduce the learning rate')
         return r_sqr