using Plots
data = float.([[70, 30, 700],[32, 60, 480],[32, 20, 300],[20, 120, 600],[40, 120, 630], [40, 30, 520], [300, 1100, 1200], [2000, 400, 1500],[40, 180, 800]])
9-element Array{Array{Float64,1},1}: [70.0, 30.0, 700.0] [32.0, 60.0, 480.0] [32.0, 20.0, 300.0] [20.0, 120.0, 600.0] [40.0, 120.0, 630.0] [40.0, 30.0, 520.0] [300.0, 1100.0, 1200.0] [2000.0, 400.0, 1500.0] [40.0, 180.0, 800.0]
float(4)
4.0
mu = [sum(data[i])/length(data[i]) for i in 1:length(data)]
9-element Array{Float64,1}: 266.667 190.667 117.333 246.667 263.333 196.667 866.667 1300.0 340.0
cov = zeros(length(data),length(data))
9×9 Array{Float64,2}: 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
for i in 1:length(data)
for j in 1:length(data)
cov[i, j] = sum((data[i]-mu[i]) .* (data[j]-mu[j]))
end
end
cov
9×9 Array{Float64,2}: 2.82467e5 1.87507e5 1.18973e5 … 162000.0 296200.0 1.87507e5 1.25963e5 79109.3 64400.0 201600.0 1.18973e5 79109.3 50122.7 64400.0 125200.0 2.27667e5 1.54747e5 96213.3 26000.0 250800.0 2.36733e5 1.60253e5 99986.7 46000.0 258600.0 2.10367e5 1.40187e5 88653.3 … 105000.0 222400.0 2.00667e5 1.55867e5 86533.3 -540000.0 286000.0 162000.0 64400.0 64400.0 1.34e6 26000.0 296200.0 201600.0 125200.0 26000.0 327200.0
eigenValue = eigvals(cov)
eigenValueIndex = sortperm(eigenValue)
9-element Array{Float64,1}: -9.76092e-11 -4.93109e-11 -1.48202e-11 -5.08811e-12 2.31244e-11 4.0565e-11 1.68439e-10 1.51917e6 1.64725e6
eigenVecs = eigvecs(cov)
9×9 Array{Float64,2}: -0.0226874 0.301071 0.350444 … -0.139602 -0.391464 -0.173634 -0.276825 0.0536874 -0.509498 -0.0340376 -0.24672 -0.142586 -0.220339 -0.391506 0.673024 -0.178374 -0.163715 -0.0755618 -0.112941 -0.762723 -0.264301 -0.135839 -0.283662 -0.206184 -0.49605 0.382593 0.0673531 -0.142446 -0.300736 -0.202383 0.719654 -0.0139984 0.138576 … 0.0149346 -0.286775 -0.139226 0.293247 0.151559 -0.221887 -0.447136 -0.0785377 -0.538287 0.10764 0.0436755 -0.147686 -0.162773 -0.604419 0.690333 0.0 0.0 0.0 0.82592 -0.366668 -0.273208
pca = dot.(cov, eigenVecs[eigenValueIndex])
9×9 Array{Float64,2}: -6408.44 -4254.04 -2699.2 … -3675.36 -6720.01 -51906.5 -34869.6 -21899.4 -17827.5 -55807.9 -26214.4 -17430.8 -11044.0 -14189.8 -27586.4 -25712.9 -17477.2 -10866.4 -2936.46 -28325.6 -1.17432e5 -79493.7 -49598.4 -22818.3 -1.28279e5 1.51391e5 1.00886e5 63799.7 … 75563.7 1.60051e5 58845.0 45707.5 25375.7 -1.58354e5 83868.7 17437.6 6932.0 6932.0 1.44237e5 2798.64 0.0 0.0 0.0 0.0 0.0
scatter(pca[:,1])
scatter3d([data[i][1] for i in 1:9],[data[i][2] for i in 1:9],[data[i][3] for i in 1:9]
[data[i][1] for i in 1:9]
9-element Array{Float64,1}: 70.0 32.0 32.0 20.0 40.0 40.0 300.0 2000.0 40.0