La reducción de dimensión no es algo específico de redes neuronales, por lo que no está recogido en Pytorch. Para ello usaremos el paquete scikit-learn Instálalo si no lo tienes.
Para cargar los datos, como estan en formato MATLAB, tendrás que utilizar scipy.io.loadmat
, o, con el paquete del curso, lectura.leemat
. Las etiquetas de las matrices son datos
y salida1
para el conjunto de ajuste y prueba
y salida2
para el conjunto de prueba
En cada paso, lo que hacemos es probar un algoritmo de reducción de dimensión y pasar a una red y ver qué tal funciona. En lo que se refiere a las redes simplemente recoge lo que has visto en prácticas previas.
Probaremos los siguientes métodos:
nuevos = sklearn.random_projection.SparseRandomProjection().fit_transform(orig)
nuevos =sklearn.decomposition.PCA(n_components=..., copy=False, whiten=True).fit_transform(orig)
Para n_components
puedes probar valores inferiores a la cantidad de filas de la matriz orig; también puedes usar el valor de columnas que haya salido del punto anterior, siempre que no pase de la cantidad de columnas. Prueba también a quitar el parámetro whitennuevos = sklearn.cluster.FeatureAgglomeration(connectivity=mat,n_clusters=n).fit_transform(orig)
Para n puedes tantear o usar una de las dimensionalidades encontradas por los algoritmos anteriores. Y mat será una matriz scipy sparse con unas pocas diagonales de unos agrupadas en torno a la principal. Esto lo ponemos porque las variables siguen un orden y pensamos que las próximas van a ser vecinas en la matriz de datos; si no fuese así, no pondrías este argumento. Por lo tanto el número de diagonales ocupadas por unos dedbería ser mayor o igual que n