示例#1
0
class artifact_removal_with_MAC:
    def __init__(self, th = 0.1):
        self.th = th
        return 
    
    def get_params(self, deep=True):
        return {"th": self.th}

    def set_params(self, **parameters):
        for parameter, value in parameters.items():
            setattr(self, parameter, value)
        return self
    
    def fit(self,X,y): 
        from mac import MAC
        self.mac = MAC(th=self.th)
        self.mac.fit(X,y)
        return
    
    def transform(self, X):
        return self.__noise_removal(X)    
    
    def predict(self, X):
        return self.transform(X)
    
    def fit_transform(self, X, y):
        self.fit(X,y)
        return self.transform(X)
    
    def __noise_removal(self, X_true):
        import numpy as np
        from tqdm import tqdm
        from mac import MAC
        noise_est = self.mac.transform(X_true)
        return np.array([[self.__ch_noise_removal(rnc, Xnc) for rnc, Xnc in zip(rn,Xn)] for rn, Xn in tqdm(zip(noise_est ,X_true))])
        
    def __ch_noise_removal(self, noise_true, X_true):
        import numpy as np
        signalEmbedding = 5
        
        noise_em = np.array([noise_true[i-signalEmbedding:i] for i in range(signalEmbedding,len(noise_true))])
        X_em = np.array([X_true[i] for i in range(signalEmbedding,len(noise_true))]).reshape(-1,1)
        
        if np.sum(noise_em) != 0.0:
            from KAF import QKLMS
            f = QKLMS(epsilon = 0)
            noise_pred = f.evaluate(noise_em,X_em)
            
            return X_em.ravel() - noise_pred.ravel()
        else:
            return X_em.ravel()