Está en la página 1de 10

#importamos librerías

1
import pandas as pd
2
import numpy as np
3
import matplotlib.pyplot as plt
4
%matplotlib inline
5
plt.rcParams['figure.figsize'] = (16, 9)
6
plt.style.use('ggplot')
7
from sklearn.decomposition import PCA
8
from sklearn.preprocessing import StandardScaler
9
 
10
#cargamos los datos de entrada
11
dataframe = pd.read_csv(r"comprar_alquilar.csv")
12
print(dataframe.tail(10))
13
 
14
#normalizamos los datos
15
scaler=StandardScaler()
16
df = dataframe.drop(['comprar'], axis=1) # quito la variable dependiente "Y"
17
scaler.fit(df) # calculo la media para poder hacer la transformacion
18
X_scaled=scaler.transform(df)# Ahora si, escalo los datos y los normalizo
19
 
20
#Instanciamos objeto PCA y aplicamos
21
pca=PCA(n_components=9) # Otra opción es instanciar pca sólo con dimensiones nuevas hasta obtener un mínimo
22
"explicado" ej.: pca=PCA(.85)
23
pca.fit(X_scaled) # obtener los componentes principales
24
X_pca=pca.transform(X_scaled) # convertimos nuestros datos con las nuevas dimensiones de PCA
25
 
26
print("shape of X_pca", X_pca.shape)
27
expl = pca.explained_variance_ratio_
28
print(expl)
29
print('suma:',sum(expl[0:5]))
30
#Vemos que con 5 componentes tenemos algo mas del 85% de varianza explicada
31
 
32
#graficamos el acumulado de varianza explicada en las nuevas dimensiones
33
plt.plot(np.cumsum(pca.explained_variance_ratio_))
34
plt.xlabel('number of components')
35
plt.ylabel('cumulative explained variance')
36
plt.show()
37
 
38
#graficamos en 2 Dimensiones, tomando los 2 primeros componentes principales
39
Xax=X_pca[:,0]
40
Yax=X_pca[:,1]
41
labels=dataframe['comprar'].values
42
cdict={0:'red',1:'green'}
43
labl={0:'Alquilar',1:'Comprar'}
44
marker={0:'*',1:'o'}
45
alpha={0:.3, 1:.5}
46
fig,ax=plt.subplots(figsize=(7,5))
47
fig.patch.set_facecolor('white')
48
for l in np.unique(labels):
49
    ix=np.where(labels==l)
50
    ax.scatter(Xax[ix],Yax[ix],c=cdict[l],label=labl[l],s=40,marker=marker[l],alpha=alpha[l])
51
 
52
plt.xlabel("First Principal Component",fontsize=14)
53
plt.ylabel("Second Principal Component",fontsize=14)
54
plt.legend()
55
plt.show(
fit(X [, y]) Calcule la media y el estándar que se utilizará para
escalar más tarde.

fit_transform (X [, y]) Ajustar a los datos, luego


transformarlos.get_params ([deep]) Obtenga parámetros para este
estimador.inverse_transform (X [, copy]) Escale los datos a la
representación original

partial_fit (X [, y]) Cálculo en línea de la media y estándar en X


para escalas posteriores.

set_params (** params) Establezca los parámetros de este


estimador.

transformación (X [, y, copia]) Realiza la estandarización


centrando y escalando

Un resumen del enfoque PCA

Estandarizar los datos.

Obtenga los vectores propios y los valores propios de la matriz de covarianza o la


matriz de correlación, o realice la descomposición del vector singular. Ordene los
valores propios en orden descendente y elija los vectores propios k que
correspondan a los valores propios más grandes k, donde k es el número de
dimensiones del nuevo subespacio (k≤d) /. Construya la matriz de proyección W a
partir de los k vectores propios seleccionados. Transforme el conjunto de datos
original X a través de W para obtener un subespacio Y de la característica k-
dimensional

Preparando el conjunto de datos IrisPara el siguiente tutorial,


trabajaremos con el famoso conjunto de datos "Iris" que se ha
depositado en el repositorio de aprendizaje automático de
UCI(https://archive.ics.uci.edu/ml/datasets/Iris).El conjunto de
datos de iris contiene medidas para 150 flores de iris de tres
especies diferentes.Las tres clases en el conjunto de datos de
Iris son:
Las tres clases en el conjunto de datos de Iris son:

Iris-setosa (n = 50)

Iris-versicolor (n = 50)

Iris-virginica (n = 50)

Y las cuatro características del conjunto de datos de Iris


son:longitud del sépalo en cm

ancho del sepalo en cmlongitud del pétalo en cm

ancho del pétalo en cm

Cargando el conjunto de datosPara cargar los datos de Iris


directamente desde el repositorio de UCI, vamos a utilizar la
excelente biblioteca de pandas. Si aún no has usado pandas, quiero
animarte a que veas los tutoriales de pandas. Si tuviera que
nombrar una biblioteca de Python que hace que trabajar con datos
sea una tarea maravillosamente simple, ¡definitivamente serían
pandas!
# dividir tabla de datos en datos X y
etiquetas de clase y

Nuestro conjunto de datos de iris ahora se almacena en forma de


una matriz de 150 × 4 donde las columnas son las diferentes
características, y cada fila representa una muestra de flores por
separado. Cada fila de muestra x se puede representar como un
vector de 4 dimensiones

Visualización exploratoriaPara tener una idea de cómo se


distribuyen las 3 clases diferentes de flores a lo largo de las 4
características diferentes, vamos a visualizarlas a través de
histogramas
EstandarizandoEl hecho de estandarizar los datos antes de un PCA
en la matriz de covarianza depende de las escalas de medición de
las características originales. Dado que PCA produce un subespacio
de características que maximiza la variacón a lo largo de los
ejes, tiene sentido estandarizar los datos, especialmente si se
midió en diferentes escalas. Aunque todas las características del
conjunto de datos Iris se midieron en centímetros, continuemos con
la transformación de los datos en una escala unitaria (media = 0 y
varianza = 1), que es un requisito para el rendimiento óptimo de
muchos algoritmos de aprendizaje automático.

Eigendecomposition - Eigenvectors y Eigenvalues computacionales Los vectores


propios y los valores propios de una matriz de covarianza (o correlación)
representan el "núcleo" de un PCA: los vectores propios (componentes
principales) determinan las direcciones del nuevo espacio de características, y los
valores propios determinan su magnitud. En otras palabras, los valores propios
explican la varianza de los datos a lo largo de los nuevos ejes de características

Matriz de covarianzaEl enfoque clásico de PCA es realizar la


composición electrónica en la matriz de covarianza Σ, que es una
matriz d × d donde cada elemento representa la covarianza entre
dos características. La covarianza entre dos características se
calcula de la siguiente manera:

Definición del PCA


Al recoger información de una muestra en una matriz datos,
lo más frecuente es
considerar el mayor número posible de variables, con el fin
de capturar la mayor parte de información, por
desconocimiento del comportamiento de la población o
simplemente para un uso exploratorio. Sobre todo hoy
en día, con la necesidad de analizar los big data,
concepto que hace referencia a las matrices de gran
escala generadas principalmente por los sistemas
informáticos. Sin embargo, al tomar un conjunto
grande de variables, dadas las interacciones entre
ellas, se hace aún más evidente la dificultad
de visualizar el comportamiento de la muestra. Queda
con ello clara la importancia de la reducción del
número de variables, procurando capturar la mayor cantidad
de información posible. El concepto de mayor cantidad de
información se relaciona con el de mayor variabilidad o
varianza absorbida. Cuanto mayor sea la variabilidad
absorbida de los datos, se considera que existe una mayor
cantidad de información.
La reducción de la dimensión, es decir, poder describir con
precisión los valores de un
conjunto de  variables por medio de un pequeño
subconjunto  de ellas, con una
pérdida pequeña de información, se convierte en un
problema central en el análisis de
datos multivariantes.
El Análisis de Componentes Principales es una de las
técnicas multivariantes más
conocida y eficaz para reducir la dimensión de una matriz de
datos de alta dimensión.
Es utilizada extensamente en el procesamiento de datos
(Jolliffe, 2002).
Como es sabido, en el campo de la Estadística Descriptiva
existen dificultades para
ajustar modelos en presencia de colinealidad, dado que
entre los supuestos de estos
modelos se supone que las variables son independientes
entre sí, lo cual comúnmente no sucede en la práctica. A
esto se une el hecho de que, aunque el coeficiente de
correlación sea muy bajo o casi nulo entre las
variables de unos datos en estudio, no se garantiza
que ambas variables no tengan otro tipo de
asociación, pues el coeficiente de correlación sólo
está midiendo el grado de asociación lineal.
Autores como Bro y Smilde (2014) consideran que en
el análisis univariante, se
descuidan explícitamente las covariaciones entre
variables, lo

También podría gustarte