Пример #1
0
    def rescale(self, Xrange, Yrange):
        '''
        Rescales the entire dataset so that all inputs X lie within (Xrange[0],Xrange[1])
        and all targets Y lie within (Yrange[0],Yrange[1]).
        The same scaling factor is applied to all folds.
        '''
        if Xrange != self.Xrange and self._X.dtype != 'uint8':
            Xscale = self.Xrange[1] - self.Xrange[0]
            if isscalar(Xscale):
                Xscale = (Xrange[1] - Xrange[0]) / maximum(1e-5, Xscale)
            else:
                bm.maximum(Xscale, 1e-5, out=Xscale)
                bm.reciprocal(Xscale, out=Xscale)
                bm.multiply(Xscale, Xrange[1] - Xrange[0], out=Xscale)

            bm.isub(self._X, self.Xrange[0])
            bm.imul(self._X, Xscale)
            bm.iadd(self._X, Xrange[0])

        if Yrange != self.Yrange and not (self._X is self._Y):
            Yscale = self.Yrange[1] - self.Yrange[0]
            if isscalar(Yscale):
                Yscale = (Yrange[1] - Yrange[0]) / maximum(1e-5, Yscale)
            else:
                bm.maximum(Yscale, 1e-5, out=Yscale)
                bm.reciprocal(Yscale, out=Yscale)
                bm.multiply(Yscale, Yrange[1] - Yrange[0], out=Yscale)
            bm.isub(self._Y, self.Yrange[0])
            bm.imul(self._Y, Yscale)
            bm.iadd(self._Y, Yrange[0])

        self.Xrange = Xrange
        self.Yrange = Yrange
Пример #2
0
    def rescale(self,Xrange,Yrange):
        '''
        Rescales the entire dataset so that all inputs X lie within (Xrange[0],Xrange[1])
        and all targets Y lie within (Yrange[0],Yrange[1]).
        The same scaling factor is applied to all folds.
        '''
        if Xrange != self.Xrange and self._X.dtype != 'uint8':
            Xscale = self.Xrange[1]-self.Xrange[0]
            if isscalar(Xscale):
                Xscale = (Xrange[1]-Xrange[0]) / maximum(1e-5,Xscale)
            else:
                bm.maximum(Xscale,1e-5,out=Xscale)
                bm.reciprocal(Xscale,out=Xscale)
                bm.multiply(Xscale,Xrange[1]-Xrange[0],out=Xscale)

            bm.isub(self._X,self.Xrange[0])
            bm.imul(self._X,Xscale)
            bm.iadd(self._X,Xrange[0])

        if Yrange != self.Yrange and not (self._X is self._Y):
            Yscale = self.Yrange[1]-self.Yrange[0]
            if isscalar(Yscale):
                Yscale = (Yrange[1]-Yrange[0]) / maximum(1e-5,Yscale)
            else:
                bm.maximum(Yscale,1e-5,out=Yscale)
                bm.reciprocal(Yscale,out=Yscale)
                bm.multiply(Yscale,Yrange[1]-Yrange[0],out=Yscale)
            bm.isub(self._Y,self.Yrange[0])
            bm.imul(self._Y,Yscale)
            bm.iadd(self._Y,Yrange[0])

        self.Xrange = Xrange
        self.Yrange = Yrange