Esempio n. 1
0
    def suboptimalSysID(self, Y):
        """System identification using KPCA.
    
        Updates the NLDS parameters.
        
        Parameters:
        -----------
        Y : numpy array, shape = (N, D)
            Input data.
        """

        nStates = self._nStates
                 
        # call KPCA to get state estimate
        if self._verbose:
            with Timer('kpca'):
                Xhat = kpca(Y, nStates, self._kpcaParams)
        else:
            Xhat = kpca(Y, nStates, self._kpcaParams)
            
        # estimate rest of parameters
        _, tau = Y.shape
        
        Ahat = Xhat[:,1:tau]*np.linalg.pinv(Xhat[:,0:tau-1])
        Vhat = Xhat[:,1:tau]-Ahat*Xhat[:,0:tau-1]
        Qhat = (Vhat*Vhat.T)/(tau-1)
        initX0 = Xhat[:,0]
        initM0 = np.mean(Xhat, axis=1)
        initS0 = np.diag(np.cov(Xhat))
   
        self._Rhat = 0
        self._Ahat = Ahat
        self._Xhat = Xhat
        self._Vhat = Vhat
        self._Qhat = Qhat
        self._initX0 = initX0
        self._initM0 = initM0
        self._initS0 = initS0
Esempio n. 2
0
    def suboptimalSysID(self, Y):
        """System identification using KPCA.

        Updates the NLDS parameters.

        Parameters:
        -----------
        Y : numpy array, shape = (N, D)
            Input data.
        """

        nStates = self._nStates

        # call KPCA to get state estimate
        if self._verbose:
            with Timer('kpca'):
                Xhat = kpca(Y, nStates, self._kpcaParams)
        else:
            Xhat = kpca(Y, nStates, self._kpcaParams)

        # estimate rest of parameters
        _, tau = Y.shape

        Ahat = Xhat[:, 1:tau] * np.linalg.pinv(Xhat[:, 0:tau - 1])
        Vhat = Xhat[:, 1:tau] - Ahat * Xhat[:, 0:tau - 1]
        Qhat = (Vhat * Vhat.T) / (tau - 1)
        initX0 = Xhat[:, 0]
        initM0 = np.mean(Xhat, axis=1)
        initS0 = np.diag(np.cov(Xhat))

        self._Rhat = 0
        self._Ahat = Ahat
        self._Xhat = Xhat
        self._Vhat = Vhat
        self._Qhat = Qhat
        self._initX0 = initX0
        self._initM0 = initM0
        self._initS0 = initS0
Esempio n. 3
0
def test_kpca():
    dataFile = os.path.join(TESTBASE, "data/data1.txt")
    data, _ = loadDataFromASCIIFile(dataFile)

    kpcaP = KPCAParam()
    kpcaP._kPar = RBFParam()
    kpcaP._kPar._kCen = True
    kpcaP._kFun = rbfK

    X = kpca(data, 5, kpcaP)

    baseKPCACoeffFile = os.path.join(TESTBASE, "data/data1-rbf-kpca-5c-center.txt")
    baseKPCACoeff = np.genfromtxt(baseKPCACoeffFile, dtype=np.double)

    # don't care about the sign
    err = np.linalg.norm(np.abs(baseKPCACoeff) - np.abs(X), "fro")
    np.testing.assert_almost_equal(err, 0, 2)
Esempio n. 4
0
def test_kpca():
    dataFile = os.path.join(TESTBASE, "data/data1.txt")
    data, _ = loadDataFromASCIIFile(dataFile)

    kpcaP = KPCAParam()
    kpcaP._kPar = RBFParam()
    kpcaP._kPar._kCen = True
    kpcaP._kFun = rbfK

    X = kpca(data, 5, kpcaP)

    baseKPCACoeffFile = os.path.join(TESTBASE,
                                     "data/data1-rbf-kpca-5c-center.txt")
    baseKPCACoeff = np.genfromtxt(baseKPCACoeffFile, dtype=np.double)

    # don't care about the sign
    err = np.linalg.norm(np.abs(baseKPCACoeff) - np.abs(X), 'fro')
    np.testing.assert_almost_equal(err, 0, 2)