Ejemplo n.º 1
0
def main():

    if db in [
            'lorenz', 'chua', 'duffing', 'nose_hoover', 'rikitake', 'rossler',
            'wang'
    ]:
        x, y, z = tsg.chaoticSystem(samples=samples, systemType=db)
        ux = np.array([x[i - L:i] for i in range(L, len(x))])
        uy = np.array([y[i - L:i] for i in range(L, len(y))])
        u = np.concatenate((ux, uy), axis=1)  # INPUT
        d = np.array([z[i] for i in range(L, len(z))]).reshape(-1, 1)
        dmin = d.min() - (d.max() - d.min()) * 0.1
        dmax = d.max() + (d.max() - d.min()) * 0.1
        print('Input', u.shape, 'Output', d.shape)

    else:
        print('Unknown dataset')
        return

    if kaf == 'KRLS_ALD':
        from KAF import KRLS_ALD
        f = KRLS_ALD(sigma=sigma, epsilon=eps)
    elif kaf == 'QKLMS_AKB':
        from KAF import QKLMS_AKB
        f = QKLMS_AKB(sigma_init=sigma, epsilon=eps, K=5)
    elif kaf == 'ALDKRLS_AKB_2':
        from KAF import ALDKRLS_AKB_2
        f = ALDKRLS_AKB_2(sigma=sigma, epsilon=eps, K_akb=10)
    elif kaf == 'QKLMS_AMK':
        from KAF import QKLMS_AMK
        f = QKLMS_AMK(sigma=sigma, epsilon=eps)
    else:
        print('Unknown KAF')
        return

    fig = plt.figure()
    ax = fig.add_subplot(111)

    y = np.zeros(d.shape)
    CB_ant = 0
    for n in range(len(u)):
        y[n] = f.evaluate(u[n].reshape(1, -1), d[n].reshape(1, -1))[0]
        if n > 3:
            ax.plot(np.array([n - 1, n]),
                    d[n - 2:n],
                    color='blue',
                    label='Target')
            ax.plot(np.array([n - 1, n]),
                    y[n - 2:n],
                    color='red',
                    label='Predicted')
            plt.ylim([dmin, dmax])
            plt.pause(1e-3)
        if CB_ant != len(f.CB):
            ax.scatter(n, y[n], color='black', label='CB update', marker='+')
            CB_ant = len(f.CB)
    plt.show()
    return
Ejemplo n.º 2
0
    def __ch_noise_removal(self, noise_true, X_true):
        import numpy as np
        from KAF import QKLMS_AMK

        f = QKLMS_AMK(embedding=int(self.embedding),
                      eta=self.eta,
                      epsilon=self.epsilon,
                      mu=self.mu,
                      Ka=int(self.Ka))
        _, X_em = f.embedder(noise_true, X_true)

        if np.sum(noise_true) != 0.0:
            noise_pred = f.evaluate(noise_true, X_true)
            import matplotlib.pyplot as plt
            # # Noise
            # plt.figure(figsize=(20,16),dpi=300)
            # plt.title("Noise")
            # plt.plot(noise_true,label='noise true')
            # plt.plot(noise_pred,label='noise predict')
            # plt.legend();plt.show()
            # # X
            # plt.figure(figsize=(20,16),dpi=300)
            # plt.title("X")
            # plt.plot(X_em,label='x raw')
            # plt.plot(X_em.ravel() - noise_pred.ravel(),label='x cleaned')
            # plt.legend();plt.show()
            # # X
            # plt.figure(figsize=(20,16),dpi=300)
            # plt.title("X raw adn noise pred")
            # plt.plot(X_em,label='x raw')
            # plt.plot(noise_pred.ravel(),label='noise')
            # plt.legend();plt.show()
            # # VS X
            # plt.figure(figsize=(20,16),dpi=300)
            # plt.title("X vs")
            # plt.plot(X_em.ravel(),label='x true')
            # plt.plot(noise_pred,label='noise pred')
            # plt.plot(X_em.ravel() - noise_pred.ravel(),label='x cleaned')
            # plt.legend();plt.show()

            return X_em.ravel() - noise_pred.ravel()
        else:
            return X_em.ravel()
Ejemplo n.º 3
0
def MC_testingMSE_QKLMS_AMK(dataset,eta,epsilon,mu,K,trainSetSize,testSetSize, MonteCarlo_N):
    Mc_MSE = []
    samples = trainSetSize*2
    
    from tqdm import tqdm
    from KAF import QKLMS_AMK
    import numpy as np
    for rep in tqdm(range(MonteCarlo_N)):
        #train set
        if dataset == 'lorenz' or dataset == "chua":
            var = 0.1
            u,d = db(samples=samples, system=dataset) 
            noise = np.sqrt(var)*np.random.randn(trainSetSize).reshape(-1,1)
            u_train = u[:trainSetSize] + noise
            d_train = d[:trainSetSize] + noise
            
            # test set
            u,d = db(samples=samples, system=dataset)
            noise = np.sqrt(var)*np.random.randn(testSetSize).reshape(-1,1)
            u_test = u[:testSetSize] + noise
            d_test = d[:testSetSize] + noise
        
        elif dataset == "4.2":
            u,d = db2(samples=samples) 
            u_train = u[:trainSetSize]
            d_train = d[:trainSetSize]
                
            # test set
            u,d = db2(samples=samples)
            u_test = u[:testSetSize]
            d_test = d[:testSetSize]
            
        mse = []
        i=0 # for option 2
        f = QKLMS_AMK(eta,epsilon,mu=mu,Ka=K,A_init="pca")
        f.evaluate(u[:100],d[:100])
        for ui,di in tqdm(zip(u_train,d_train)):
            try:
                f.evaluate(ui,di)
                
                # Option 1
                # y_pred = f.predict(u_test) 
                # mse.append(np.mean((d_test-np.array(y_pred).reshape(-1,1))**2/d_test**2))
                
                # Option 2
                if np.mod(i,5)==0:
                    y_pred = f.predict(u_test) 
                    mse.append(np.sum((d_test-np.array(y_pred).reshape(-1,1))**2)/np.sum(d_test**2))
            except:
                mse.append(0)
            i+=1
        Mc_MSE.append(mse)
        return np.mean(np.array(Mc_MSE),axis=0).reshape(-1,1)
Ejemplo n.º 4
0
 def singleChannelNoiseRemoval(self, X, r):
     import numpy as np
     from KAF import QKLMS_AMK
     f = QKLMS_AMK(embedding=int(self.embedding), eta=self.eta, epsilon=self.epsilon, mu=self.mu, Ka=int(self.Ka))
     _,X_ = f.embedder(r,X)
     
     if np.sum(r) != 0.0:
         f.evaluate(r[:100],X[:100]) # Evaluation for PCA initialization
         v = np.array(f.evaluate(r,X))
         return X_.ravel() - v.ravel()  
     else:
         return X_.ravel()
Ejemplo n.º 5
0
for param in tqdm(param_list):
    fold = 0
    kf = KFold(n_splits=folds)
    r2_temporal = []
    params_results = param.copy()
    for train_index, test_index in kf.split(Xdata, labels):

        print("\n###########################################")
        print("\nFILE : ", filename)
        print("\nFOLD: ", fold)
        #print("TRAIN:", train_index, "TEST:", test_index)
        X_train, X_test = Xdata[test_index], Xdata[train_index]
        N_train, N_test = Noise[test_index], Noise[train_index]
        y_train, y_test = labels[test_index], labels[train_index]

        f = QKLMS_AMK()
        f.set_params(**param)

        r2 = []

        N_train_t = N_train.reshape(-1, N_train.shape[2])

        ind = np.random.permutation(len(N_train_t))[:20]

        for channel in tqdm(N_train_t[ind]):
            try:
                pred = np.array(f.evaluate(channel, channel)).reshape(-1, 1)
                _, target = f.embedder(channel, channel)
                r2.append(r2_score(target, pred))
                #plt.scatter(target,pred)
                #plt.show()