{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "using CSV\n", "using DataFrames\n", "using Plots\n", "using StatsPlots\n", "using GLM\n", "using Statistics\n", "using Distributions\n", "using Random\n", "using MultivariateStats" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "FullNormal(\n", "dim: 2\n", "μ: [0.0, 0.0]\n", "Σ: [1.0 1.0; 1.0 2.0]\n", ")\n" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "μ = [0, 0]\n", "σ = [1.0 1.0; 1.0 2.0]\n", "dist = Distributions.MvNormal(μ, σ)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2×100 Array{Float64,2}:\n", " 1.90728 0.417492 0.514817 0.453653 … 0.991181 1.40246 0.892847\n", " 0.710246 0.31368 -0.209396 -0.669405 1.54026 1.47478 1.03204" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample = rand(dist, 100) # the random samples are close to Figure 6.14" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "PCA(indim = 2, outdim = 2, principalratio = 1.0)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p = fit(PCA, sample)" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "proj = projection(p) # get principle component\n", "x = sample[1, :]\n", "y = sample[2, :]\n", "\n", "scatter(x, y)\n", "first_pca = proj[:, 2] # principle components are sorted in descending order\n", "second_pca = proj[:, 1]\n", "plot!([-2, 2], [(2 * first_pca[1] / first_pca[2]), (-2 * first_pca[1] / first_pca[2])])\n", "plot!([-2, 2], [(2 * second_pca[1] / second_pca[2]), (-2 * second_pca[1] / second_pca[2])])\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Julia 1.5.1", "language": "julia", "name": "julia-1.5" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.5.1" } }, "nbformat": 4, "nbformat_minor": 4 }