Estoy tratando de replicar Shalizi del NY Times PCA ejemplo se encuentra en su Análisis Avanzado de Datos con un Elemental Punto de Vista del libro. He encontrado ejemplos de código y datos aquí
http://www.stat.cmu.edu/~cshalizi/490/pca/
Me cargan los R área de trabajo pca-ejemplos.Rdata, y fue capaz de extraer de un archivo CSV que he puesto en
https://github.com/burakbayramli/classnotes/blob/master/app-math-tr/pca/nytimes.csv
En orden para PCA utilizando SVD, yo lo hice
from pandas import *
import numpy.linalg as lin
nyt = read_csv ("nytimes.csv")
labels = nyt['class.labels']
nyt = nyt.drop(["class.labels"],axis=1)
nyt_demeaned = nyt - nyt.mean(0)
u,s,v = lin.svd(nyt_demeaned.T,full_matrices=False)
Entonces traté de proyectar en el espacio definido por los vectores propios
nyt2 = np.dot(nyt_demeaned, u[:,0:2])
Luego de la parcela
plot(nyt2[:,0],nyt2[:,1],'.')
y
arts = nyt2[labels == 'art']
music = nyt2[labels == 'music']
plot(arts[:,0],arts[:,1],'r.')
plot(music[:,0],music[:,1],'b.')
Puedo conseguir
Esta imagen es diferente de Shalizi la imagen de su libro (utilizando el siguiente código R)
load("pca-examples.Rdata")
nyt.pca = prcomp(nyt.frame[,-1])
nyt.latent.sem = nyt.pca$rotation
plot(nyt.pca$x[,1:2],type="n")
points(nyt.pca$x[nyt.frame[,"class.labels"]=="art",1:2],
pch="A",col="red")
points(nyt.pca$x[nyt.frame[,"class.labels"]=="music",1:2],
pch="M",col="blue")
Tal vez había un 90 grados de error, se da la vuelta de una manera o de otra, etc. a continuación, usted quizás podría tener las dos imágenes para ser un poco estrecha, pero incluso entonces la distribución no es exactamente correcto, y los puntos de datos para las artes no son tan claramente separado de la música de puntos de datos como lo son en Shalizi de la imagen.
Alguna idea?