# Analiza Składowych Głównych (Principal Component Analysis): ortogonalizujemy # kolumny X (cechy) i ustawiamy je w porzadku malejących wariancji. library(MASS); data(Pima.te); data(Pima.tr) X=rbind(Pima.te, Pima.tr); X[,8]=ifelse(X[,8]=="Yes",1,0) pr = prcomp(X[,-8]); A=pr$x # pr$x - przekształcone dane # pr$rot - macierz przekształcenia # pr$sdev - sd przekształcenia # Wzorki z wykładu... # V' sigma_x V=Lambda, V'V = I # pr$rot = V # X = [X11, .. X1P # X21, .. X2P # .... # XN1, .. XNP ] # Centrujemy X, czyli sumy w kolumnach się zerują. # U W A G A # W ksiązkach panują 2 konwencje. W PCA dla populacji ( wersja z wartością # oczekiwaną) zapisuje się wektor losowy (możliwą obserwację) w kolumnie, więc # uśrednia się w wierszach). W PCA dla próby, czyli w analizie danych zapisuje # się obserwację w wierszu macierzy danych. Uśrednia się wiec w kolumnach. # Pokażemy dane o porodach i glukozie na płaszczyźnie, króra je najbardziej # różnicuje. Zaznaczymy różnymi kolorami kobiety chore i zdrowe. plot(A[,1], A[,2], col = -X[,8] + 3) # Teraz glukoza i wiek w innym okienku. X11() # nowe okienko; mozna także x11() plot(X[,2], X[,7], col = -X[,8] + 3) # Klasteryzacja metodą k-średnich. Cel: porównać jak się ma klasteryzacja # do podziału na chory-zdrowy. cl = kmeans(X[,-8], 2) X11(); plot(A[,1], A[,2], col = cl$cluster) # Aglomeracyjna klasteryzacja hierarchiczna hcl = hclust(dist(X[,-8])) X11(); plot(hcl) #rysunek drzewka (dendrogram) #wniosek: żeby drzewko rozpadło się na dwie grupy, trzeba ciąć powyżej 105. podzial = as.vector(cutree(hcl,2)) #generuje podział na dwa śliczne klastry X11(); plot(A[,1], A[,2], col = podzial)