msaf/pymf/chnmf.py
def update_w(self):
        """ compute new W """
        def select_hull_points(data, n=3):
            """ select data points for pairwise projections of the first n
            dimensions """

            # iterate over all projections and select data points
            idx = np.array([])

            # iterate over some pairwise combinations of dimensions
            for i in combinations(range(n), 2):
                # sample convex hull points in 2D projection
                convex_hull_d = quickhull(data[i, :].T)

                # get indices for convex hull data points
                idx = np.append(idx, vq(data[i, :], convex_hull_d.T))
                idx = np.unique(idx)

            return np.int32(idx)

        # determine convex hull data points using either PCA or random
        # projections
        method = 'randomprojection'
        if method == 'pca':
            pcamodel = PCA(self.data)
            pcamodel.factorize(show_progress=False)
            proj = pcamodel.H
        else:
            R = np.random.randn(self._base_sel, self._data_dimension)
            proj = np.dot(R, self.data)

        self._hull_idx = select_hull_points(proj, n=self._base_sel)
        aa_mdl = AA(self.data[:, self._hull_idx], num_bases=self._num_bases)

        # determine W
        aa_mdl.factorize(niter=50, compute_h=True, compute_w=True,
                         compute_err=True, show_progress=False)

        self.W = aa_mdl.W
        self._map_w_to_data()
def update_w(self):
        """ compute new W """
        def select_hull_points(data, n=3):
            """ select data points for pairwise projections of the first n
            dimensions """

            # iterate over all projections and select data points
            idx = np.array([])

            # iterate over some pairwise combinations of dimensions
            for i in combinations(range(n), 2):
                # sample convex hull points in 2D projection
                convex_hull_d = quickhull(data[i, :].T)

                # get indices for convex hull data points
                idx = np.append(idx, vq(data[i, :], convex_hull_d.T))
                idx = np.unique(idx)

            return np.int32(idx)

        # determine convex hull data points using either PCA or random
        # projections
        method = 'randomprojection'
        if method == 'pca':
            pcamodel = PCA(self.data)
            pcamodel.factorize(show_progress=False)
            proj = pcamodel.H
        else:
            R = np.random.randn(self._base_sel, self._data_dimension)
            proj = np.dot(R, self.data)

        self._hull_idx = select_hull_points(proj, n=self._base_sel)
        aa_mdl = AA(self.data[:, self._hull_idx], num_bases=self._num_bases)

        # determine W
        aa_mdl.factorize(niter=50, compute_h=True, compute_w=True,
                         compute_err=True, show_progress=False)

        self.W = aa_mdl.W
        self._map_w_to_data()
def update_w ( self ) : def select_hull_points ( data , n = 3 ) : """ select data points for pairwise projections of the first n
            dimensions """ # iterate over all projections and select data points idx = np . array ( [ ] ) # iterate over some pairwise combinations of dimensions for i in combinations ( range ( n ) , 2 ) : # sample convex hull points in 2D projection convex_hull_d = quickhull ( data [ i , : ] . T ) # get indices for convex hull data points idx = np . append ( idx , vq ( data [ i , : ] , convex_hull_d . T ) ) idx = np . unique ( idx ) return np . int32 ( idx ) # determine convex hull data points using either PCA or random # projections method = 'randomprojection' if method == 'pca' : pcamodel = PCA ( self . data ) pcamodel . factorize ( show_progress = False ) proj = pcamodel . H else : R = np . random . randn ( self . _base_sel , self . _data_dimension ) proj = np . dot ( R , self . data ) self . _hull_idx = select_hull_points ( proj , n = self . _base_sel ) aa_mdl = AA ( self . data [ : , self . _hull_idx ] , num_bases = self . _num_bases ) # determine W aa_mdl . factorize ( niter = 50 , compute_h = True , compute_w = True , compute_err = True , show_progress = False ) self . W = aa_mdl . W self . _map_w_to_data ( )
compute new W
compute new W