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)
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)
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)
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