(self , datasets , labels , attr , split_value)
return error
回归树的损失函数
            param:datasets:class 训练数据集
            param:labels:list target目标训练值
            param:attr:int 训练属性坐标
            param:split_value:float 属性分裂值
            return:error :如果训练数据集没有出错则返回损失值，否则返回None
            raise:None
回归树的损失函数
            param:datasets:class 训练数据集
            param:labels:list target目标训练值
            param:attr:int 训练属性坐标
            param:split_value:float 属性分裂值
            return:error :如果训练数据集没有出错则返回损失值，否则返回None
            raise:None
回归树的损失函数 param : datasets : class 训练数据集 param : labels : list target目标训练值 param : attr : int 训练属性坐标 param : split_value : float 属性分裂值 return : error : 如果训练数据集没有出错则返回损失值，否则返回None raise : None
def loss(self , datasets , labels , attr , split_value):
        """回归树的损失函数
            param:datasets:class 训练数据集
            param:labels:list target目标训练值
            param:attr:int 训练属性坐标
            param:split_value:float 属性分裂值
            return:error :如果训练数据集没有出错则返回损失值，否则返回None
            raise:None
        """
        c1 , c2 = self.get_target_avg(datasets , attr , split_value)
        if c1 is None or c2 is None:
            return None
        error = None
        for i in xrange(len(datasets)):
            if datasets[i][attr] is None:
                continue
            if error is None:
                error = 0.
            if datasets[i][attr] > split_value:
                error += (labels[i] - c1) ** 2
            else:
                error += (labels[i] - c2) ** 2
        return error
def loss ( self , datasets , labels , attr , split_value ) : c1 , c2 = self . get_target_avg ( datasets , attr , split_value ) if c1 is None or c2 is None : return None error = None for i in xrange ( len ( datasets ) ) : if datasets [ i ] [ attr ] is None : continue if error is None : error = 0. if datasets [ i ] [ attr ] > split_value : error += ( labels [ i ] - c1 ) ** 2 else : error += ( labels [ i ] - c2 ) ** 2 return error