-
Notifications
You must be signed in to change notification settings - Fork 0
/
LSED_Lab_10__Zadanie_8.R
67 lines (48 loc) · 2.54 KB
/
LSED_Lab_10__Zadanie_8.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
### LSED - Zadanie 8 - LAB nr 10
# Autor: Szymon Baczyński 270626
# Polecenie:
# Wykonać analizę PCA dla zbioru win.
# Wykreślić skumulowane odchylenie standardowe od liczby składowych
# oraz punkty w nowych zmiennych dla 1 i 2 oraz 2 i 3 składowej.
rm(list=ls())
library(MASS)
start_time <- Sys.time()
### --- Punkt 1 - Wczytać dane --- ###
cat("\n"); print("--- Punkt nr 1 zadania ---");
ifelse(!file.exists("wine.dat"), write.table(wina <- read.table("https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data", sep=","), file="wine.dat", sep=","), wina <- read.table("wine.dat", sep=","))
print("Wczytano dane i utworzono plik 'wine.dat' (jeśli taki nie istniał)")
### --- Punkt 2 - Nazwać kolumny --- ###
cat("\n"); print("--- Punkt nr 2 zadania ---");
colnames(wina) <- c("class","Alcohol","Malic acid","Ash","Alcalinity of ash","Magnesium","Total phenols","Flavanoids","Nonflavanoid phenols","Proanthocyanins","Color intensity","Hue","OD280/OD315 of diluted wines", "Proline")
print("Nazwano kolumny według pliku pomocniczego")
### --- Punkt 3 - Analiza PCA --- ###
cat("\n"); print("--- Punkt nr 3 zadania ---");
print("Analiza PCA"); cat("\n")
wina <- data.frame(wina)
# plot(wina[,2], wina[,3], pch=19, xlab="Test 1", ylab="Test 2")
# plot(wina[,3], wina[,4], pch=19, xlab="Test 2", ylab="Test 3")
# Wykonanie analizy składowych glownych
wina.pc <- princomp(~., cor=T, data=wina[,-1])
# sum_sdev <- 0.0
# for (i in c(1:length(wina.pc$sdev))){
# sum_sdev[i] <- sum(wina.pc$sdev[1:i])
# }
sum_test <- sapply(c(1:length(wina.pc$sdev)), function(v) sum(wina.pc$sdev[1:v]))
suma <- sum(wina.pc$sdev)
# Wykreślenie wariancji zwiaząnych ze składowymi
plot(sum_test/suma, main="Znormalizowane Skumulowane Odchylenie Standardowe od Liczby Składowych", xlab="Liczba składowych", ylab="Znormalizowane Skumulowane Odchylenie standardowe",type="b", col="red" )
axis(side=1, at=c(1:length(sum_test)))
print("Odchylenie standardowe z PCA:")
print(round(wina.pc$sdev,6)); cat("\n")
print("Skumulowane odchylenie standardowe:")
cat(sum_test); cat("\n\n")
print("Narysowano wykresy dla składowych 1 i 2 oraz 2 i 3")
# Wykres we współrzędnych składowych głównych
plot(wina.pc$scores[,1:2], col = as.factor(wina[,1]), xlab="Składowa 1", ylab="Składowa 2")
title("Składowe 1 i 2", cex.main=1.4)
# Wykres we współrzędnych składowych głównych
plot(wina.pc$scores[,2:3], col = as.factor(wina[,1]), xlab="Składowa 2", ylab="Składowa 3")
title("Składowe 2 i 3", cex.main=1.4)
cat("\n"); print("Czas wykonania programu: ")
end_time <- Sys.time()
print(end_time-start_time)