principales paso funciona ejemplo componentes como calcular analisis algoritmo python numpy scikit-learn pca

python - paso - Dimensión de los datos antes y después de realizar PCA



pca image python (1)

Estoy intentando la competencia de reconocimiento de dígitos de kaggle.com usando Python y scikit-learn.

Después de eliminar etiquetas de los datos de entrenamiento, agrego cada fila en CSV en una lista como esta:

for row in csv: train_data.append(np.array(np.int64(row)))

Yo hago lo mismo para los datos de prueba.

Preprocesamos estos datos con PCA para realizar la reducción de dimensiones (y la extracción de características):

def preprocess(train_data, test_data, pca_components=100): # convert to matrix train_data = np.mat(train_data) # reduce both train and test data pca = decomposition.PCA(n_components=pca_components).fit(train_data) X_train = pca.transform(train_data) X_test = pca.transform(test_data) return (X_train, X_test)

Luego creo un clasificador kNN y lo X_train con los datos de X_train y hago predicciones usando los datos X_test .

Usando este método puedo obtener un 97% de precisión.

Mi pregunta es acerca de la dimensionalidad de los datos antes y después de que se realiza PCA

¿Cuáles son las dimensiones de train_data y X_train ?

¿Cómo influye la cantidad de componentes en la dimensionalidad del resultado? ¿Son la misma cosa?


El algoritmo PCA encuentra los vectores propios de la matriz de covarianza de los datos. ¿Qué son los vectores propios? Nadie lo sabe, y a nadie le importa (¡es broma!). Lo que es importante es que el primer vector propio es un vector paralelo a la dirección a lo largo del cual los datos tienen la mayor varianza (de forma intuitiva: propagación). El segundo denota la segunda mejor dirección en términos de la dispersión máxima, y ​​así sucesivamente. Otro hecho importante es que estos vectores son ortogonales entre sí, por lo que forman una base .

El parámetro pca_components le dice al algoritmo cuántos mejores vectores de base le interesan. Por lo tanto, si pasa 100 significa que desea obtener 100 vectores de base que describan (los estadísticos dirían: explicar ) la mayor parte de la varianza de sus datos.

La función de transformación transforma (¿srsly ?;)) los datos de la base original a la base formada por los componentes de PCA elegidos (en este ejemplo, los primeros 100 mejores vectores). Puede visualizar esto como una nube de puntos girados y teniendo algunas de sus dimensiones ignoradas. Como Jaime puntualizó correctamente en los comentarios, esto equivale a proyectar los datos sobre la nueva base.

Para el caso 3D, si desea obtener una base formada por los primeros 2 vectores propios, nuevamente, la nube de puntos 3D se rotará primero, por lo que la mayoría de la varianza sería paralela a los ejes de coordenadas. Entonces, el eje donde la varianza es más pequeña se descarta, dejándolo con datos 2D.

Por lo tanto, para responder a su pregunta directamente: sí, el número de los componentes de PCA deseados es la dimensionalidad de los datos de salida (después de la transformación).