Recuperación de señal esparsa con Orthogonal Matching Pursuit

Machine LearningMachine LearningBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

La Búsqueda de Perseguimiento Ortogonal (OMP, por sus siglas en inglés) es un método para recuperar una señal esparsa a partir de una medición ruidosa codificada con un diccionario. En este laboratorio, usaremos scikit-learn para implementar la OMP y recuperar una señal esparsa a partir de una medición ruidosa.

Consejos sobre la VM

Una vez que se haya iniciado la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/linear_model("Linear Models") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/linear_model -.-> lab-49232{{"Recuperación de señal esparsa con Orthogonal Matching Pursuit"}} sklearn/datasets -.-> lab-49232{{"Recuperación de señal esparsa con Orthogonal Matching Pursuit"}} ml/sklearn -.-> lab-49232{{"Recuperación de señal esparsa con Orthogonal Matching Pursuit"}} end

Importar bibliotecas

import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import OrthogonalMatchingPursuit
from sklearn.linear_model import OrthogonalMatchingPursuitCV
from sklearn.datasets import make_sparse_coded_signal

Generar los datos

n_components, n_features = 512, 100
n_nonzero_coefs = 17

## generar los datos

## y = Xw
## |x|_0 = n_nonzero_coefs

y, X, w = make_sparse_coded_signal(
    n_samples=1,
    n_components=n_components,
    n_features=n_features,
    n_nonzero_coefs=n_nonzero_coefs,
    random_state=0,
)
X = X.T

(idx,) = w.nonzero()

## distorsionar la señal limpia
y_noisy = y + 0.05 * np.random.randn(len(y))

Graficar la señal esparsa

plt.figure(figsize=(7, 7))
plt.subplot(4, 1, 1)
plt.xlim(0, 512)
plt.title("Señal esparsa")
plt.stem(idx, w[idx])

Graficar la reconstrucción sin ruido

omp = OrthogonalMatchingPursuit(n_nonzero_coefs=n_nonzero_coefs)
omp.fit(X, y)
coef = omp.coef_
(idx_r,) = coef.nonzero()
plt.subplot(4, 1, 2)
plt.xlim(0, 512)
plt.title("Señal recuperada a partir de mediciones sin ruido")
plt.stem(idx_r, coef[idx_r])

Graficar la reconstrucción con ruido

omp.fit(X, y_noisy)
coef = omp.coef_
(idx_r,) = coef.nonzero()
plt.subplot(4, 1, 3)
plt.xlim(0, 512)
plt.title("Señal recuperada a partir de mediciones con ruido")
plt.stem(idx_r, coef[idx_r])

Graficar la reconstrucción con ruido con el número de ceros no nulos establecido por CV

omp_cv = OrthogonalMatchingPursuitCV()
omp_cv.fit(X, y_noisy)
coef = omp_cv.coef_
(idx_r,) = coef.nonzero()
plt.subplot(4, 1, 4)
plt.xlim(0, 512)
plt.title("Señal recuperada a partir de mediciones con ruido con CV")
plt.stem(idx_r, coef[idx_r])

plt.subplots_adjust(0.06, 0.04, 0.94, 0.90, 0.20, 0.38)
plt.suptitle("Recuperación de señal esparsa con Orthogonal Matching Pursuit", fontsize=16)
plt.show()

Resumen

En este laboratorio, hemos aprendido cómo usar Orthogonal Matching Pursuit (OMP) para recuperar una señal esparsa a partir de una medición ruidosa codificada con un diccionario. Hemos utilizado scikit-learn para implementar OMP y generar una señal codificada esparsa. También hemos trazado la señal esparsa, la reconstrucción sin ruido, la reconstrucción con ruido y la reconstrucción con ruido con el número de ceros no nulos establecido por CV.