关注微信公共号:小程在线

关注CSDN博客:程志伟的博客

1.加载包

julia> using MultivariateStats, RDatasets

2.导入数据集

julia> iris = dataset("datasets", "iris")
150×5 DataFrame
│ Row │ SepalLength │ SepalWidth │ PetalLength │ PetalWidth │ Species   │
│     │ Float64     │ Float64    │ Float64     │ Float64    │ Cat…      │
├─────┼─────────────┼────────────┼─────────────┼────────────┼───────────┤
│ 1   │ 5.1         │ 3.5        │ 1.4         │ 0.2        │ setosa    │
│ 2   │ 4.9         │ 3.0        │ 1.4         │ 0.2        │ setosa    │
│ 3   │ 4.7         │ 3.2        │ 1.3         │ 0.2        │ setosa    │
│ 4   │ 4.6         │ 3.1        │ 1.5         │ 0.2        │ setosa    │
│ 5   │ 5.0         │ 3.6        │ 1.4         │ 0.2        │ setosa    │
│ 6   │ 5.4         │ 3.9        │ 1.7         │ 0.4        │ setosa    │
│ 7   │ 4.6         │ 3.4        │ 1.4         │ 0.3        │ setosa    │
│ 8   │ 5.0         │ 3.4        │ 1.5         │ 0.2        │ setosa    │
│ 9   │ 4.4         │ 2.9        │ 1.4         │ 0.2        │ setosa    │
│ 10  │ 4.9         │ 3.1        │ 1.5         │ 0.1        │ setosa    │

│ 140 │ 6.9         │ 3.1        │ 5.4         │ 2.1        │ virginica │
│ 141 │ 6.7         │ 3.1        │ 5.6         │ 2.4        │ virginica │
│ 142 │ 6.9         │ 3.1        │ 5.1         │ 2.3        │ virginica │
│ 143 │ 5.8         │ 2.7        │ 5.1         │ 1.9        │ virginica │
│ 144 │ 6.8         │ 3.2        │ 5.9         │ 2.3        │ virginica │
│ 145 │ 6.7         │ 3.3        │ 5.7         │ 2.5        │ virginica │
│ 146 │ 6.7         │ 3.0        │ 5.2         │ 2.3        │ virginica │
│ 147 │ 6.3         │ 2.5        │ 5.0         │ 1.9        │ virginica │
│ 148 │ 6.5         │ 3.0        │ 5.2         │ 2.0        │ virginica │
│ 149 │ 6.2         │ 3.4        │ 5.4         │ 2.3        │ virginica │
│ 150 │ 5.9         │ 3.0        │ 5.1         │ 1.8        │ virginica │

3.创建训练集

julia> Xtr = convert(Array,(iris[1:2:end,1:4]))'
4×75 LinearAlgebra.Adjoint{Float64,Array{Float64,2}}:
 5.1  4.7  5.0  4.6  4.4  5.4  4.8  5.8  5.4  5.7  5.4  4.6  …  6.4  7.4  6.4  6.1  6.3  6.0  6.7  5.8  6.7  6.3  6.2
 3.5  3.2  3.6  3.4  2.9  3.7  3.0  4.0  3.9  3.8  3.4  3.6     2.8  2.8  2.8  2.6  3.4  3.0  3.1  2.7  3.3  2.5  3.4
 1.4  1.3  1.4  1.4  1.4  1.5  1.4  1.2  1.3  1.7  1.7  1.0     5.6  6.1  5.6  5.6  5.6  4.8  5.6  5.1  5.7  5.0  5.4
 0.2  0.2  0.2  0.3  0.2  0.2  0.1  0.2  0.4  0.3  0.2  0.2     2.1  1.9  2.2  1.4  2.4  1.8  2.4  1.9  2.5  1.9  2.3

julia> Xtr_labels = convert(Array,(iris[1:2:end,5]))
75-element Array{String,1}:
 "setosa"
 "setosa"
 "setosa"
 "setosa"
 "setosa"
 "setosa"
 "setosa"
 "setosa"
 "setosa"
 "setosa"
 "setosa"
 "setosa"
 "setosa"
 ⋮
 "virginica"
 "virginica"
 "virginica"
 "virginica"
 "virginica"
 "virginica"
 "virginica"
 "virginica"
 "virginica"
 "virginica"
 "virginica"
 "virginica"

4.创建测试集

julia> Xte = convert(Array,(iris[2:2:end,1:4]))'
4×75 LinearAlgebra.Adjoint{Float64,Array{Float64,2}}:
 4.9  4.6  5.4  5.0  4.9  4.8  4.3  5.7  5.1  5.1  5.1  5.1  …  7.2  7.9  6.3  7.7  6.4  6.9  6.9  6.8  6.7  6.5  5.9
 3.0  3.1  3.9  3.4  3.1  3.4  3.0  4.4  3.5  3.8  3.7  3.3     3.0  3.8  2.8  3.0  3.1  3.1  3.1  3.2  3.0  3.0  3.0
 1.4  1.5  1.7  1.5  1.5  1.6  1.1  1.5  1.4  1.5  1.5  1.7     5.8  6.4  5.1  6.1  5.5  5.4  5.1  5.9  5.2  5.2  5.1
 0.2  0.2  0.4  0.2  0.1  0.2  0.1  0.4  0.3  0.3  0.4  0.5     1.6  2.0  1.5  2.3  1.8  2.1  2.3  2.3  2.3  2.0  1.8

julia> Xte_labels = convert(Array,(iris[2:2:end,5]))
75-element Array{String,1}:
 "setosa"
 "setosa"
 "setosa"
 "setosa"
 "setosa"
 "setosa"
 "setosa"
 "setosa"
 "setosa"
 "setosa"
 "setosa"
 "setosa"
 "setosa"
 ⋮
 "virginica"
 "virginica"
 "virginica"
 "virginica"
 "virginica"
 "virginica"
 "virginica"
 "virginica"
 "virginica"
 "virginica"
 "virginica"
 "virginica"

5.创建PCA,保留3个变量

julia> M = fit(PCA, Xtr; maxoutdim=3)
PCA(indim = 4, outdim = 3, principalratio = 0.9957325846529407)

6.对测试集进行测试

julia> Yte = transform(M, Xte)
WARNING: both RDatasets and MultivariateStats export "transform"; uses of it in module Main must be qualified
ERROR: UndefVarError: transform not defined
Stacktrace:
 [1] top-level scope at REPL[8]:1

julia> Yte = MultivariateStats.transform(M, Xte)
3×75 Array{Float64,2}:
  2.72714    2.75491     2.32396   2.65105     2.68917   …  -1.89212   -2.53304   -1.92047   -1.74161   -1.37706
 -0.230916  -0.406149    0.646374  0.0828144  -0.17411       0.476081   0.329041   0.246554   0.127625  -0.280295
  0.253119   0.0271266  -0.230469  0.0252853   0.231507     -0.1407    -0.309265  -0.180044  -0.123165  -0.314992

julia> Xr = reconstruct(M, Yte)
4×75 Array{Float64,2}:
 4.86449  4.61087   5.40782   5.00775   4.90864   4.83689   …  6.85145  6.76852  6.79346  6.58825  6.46774  5.94384
 3.04262  3.08695   3.89061   3.39069   3.08963   3.35572      3.15828  3.25784  3.20785  3.13416  3.03873  2.94737
 1.46099  1.48132   1.68656   1.48668   1.48516   1.53664      5.4834   5.32585  5.91124  5.39197  5.25542  5.02469
 0.10362  0.229519  0.421233  0.221041  0.123445  0.300129     1.96821  1.9431   2.28224  1.99665  1.91243  1.91901

7.对标签进行颜色分组

julia> setosa = Yte[:,Xte_labels.=="setosa"]
3×25 Array{Float64,2}:
  2.72714    2.75491     2.32396   2.65105     2.68917   …   2.83607    2.42896     2.7245     2.85164    2.72585
 -0.230916  -0.406149    0.646374  0.0828144  -0.17411      -0.969268   0.0908506  -0.314765  -0.324812   0.0357625
  0.253119   0.0271266  -0.230469  0.0252853   0.231507      0.48069   -0.259688    0.149877  -0.0346684  0.0995694

julia> versicolor = Yte[:,Xte_labels.=="versicolor"]
3×25 Array{Float64,2}:
 -0.901049   -0.189593  -0.631938    0.737306   0.00578031  …   0.692149  -0.315901   -0.620402   -0.288899
  0.350685   -0.7887    -0.40525    -1.01982   -0.74682        -1.00992   -0.215681    0.0637046  -0.336681
 -0.0027406   0.291058   0.0207768   0.121331  -0.179235        0.23994   -0.0438964   0.218073    0.0457549

julia> virginica = Yte[:,Xte_labels.=="virginica"]
3×25 Array{Float64,2}:
 -1.4126    -1.95359   -3.35517   -2.89581   -2.8711    …  -1.89212   -2.53304   -1.92047   -1.74161   -1.37706
 -0.556727  -0.133821   0.692925   0.487134   0.828406      0.476081   0.329041   0.246554   0.127625  -0.280295
 -0.214115  -0.075898   0.293002   0.386084  -0.496979     -0.1407    -0.309265  -0.180044  -0.123165  -0.314992

julia> size(Xte)
(4, 75)

julia> size(Yte)
(3, 75)

8.对结果进行可视化

julia> using Plots

julia> p = scatter(setosa[1,:],setosa[2,:],setosa[3,:],marker=:circle,linewidth=0)

scatter!(versicolor[1,:],versicolor[2,:],versicolor[3,:],marker=:circle,linewidth=0)

scatter!(virginica[1,:],virginica[2,:],virginica[3,:],marker=:circle,linewidth=0)

Julia PCA降维处理相关推荐

  1. 机器学习(5)降维 -- 特征选择(低方差过滤与相关系数)与主成分分析(PCA降维)

    目录 一.基础理论 1.降维定义 2.降维对象及目标 二.低方差过滤 1.基础理论 2.API 过程: 1.读取待处理数据集 2.创建低方差过滤转换器(设置过滤阈值) 3.低方差过滤处理 代码 三.相 ...

  2. 通俗理解PCA降维作用

    作者 | 黄礼泊,广东工业大学数据挖掘与信息检索实验室(DMIR),机器学习与人工智能,目前研究方向最优化,将最优化理论运用在图像检索.压缩感知生物信号处理等领域. ▌概述   本文主要介绍一种降维方 ...

  3. 数学推导+纯Python实现机器学习算法26:PCA降维

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作为一种常见的多元统计分析方法,主成分分析法(Principal ...

  4. OpenCV下PCA降维

    版权声明:本文为博主原创文章,未经博主允许不得转载. 原文:http://blog.csdn.net/yang_xian521/article/details/7445536 这两天看了下PCA降维, ...

  5. ML之SVM:利用SVM算法对手写数字图片识别数据集(PCA降维处理)进行预测并评估模型(两种算法)性能

    ML之SVM:利用SVM算法对手写数字图片识别数据集(PCA降维处理)进行预测并评估模型(两种算法)性能 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 estimator = PC ...

  6. PCA降维算法原理及代码实现(python和matlab)

    常见的数据降维算法有:奇异值分解(SVD).主成分分析(PCA).因子分析(FA).独立成分分析(ICA). PCA降维的基本思想:通过计算数据矩阵的协方差矩阵,然后得到协方差矩阵的特征值.特征向量. ...

  7. matlab中利用princomp实现PCA降维

    matlab中利用princomp实现PCA降维 在matlab中有函数princomp可以实现数据的降维,本文主要说明该函数的用法. PCA的作用: PCA(主成分分析法),主要用来对数据进行降维, ...

  8. 【机器学习基础】数学推导+纯Python实现机器学习算法19:PCA降维

    Python机器学习算法实现 Author:louwill Machine Learning Lab 作为一种常见的多元统计分析方法,主成分分析法(Principal Component Analys ...

  9. 【白话机器学习】算法理论+实战之PCA降维

    1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,在这简单的先捋一捋, 常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支 ...

最新文章

  1. benchmark mysql_程序员的MySQL手册(二): 监控与benchmark
  2. hdu1466 递推
  3. linux 迁移mysql目录_linux默认mysql迁移目录
  4. POSIX 信号量学习与思考
  5. openstack创建虚拟机之后使用ssh登陆的解决办法
  6. 概率论与数理统计——贝塞尔校正(Bessel‘s Correction)
  7. 爆!看过这么多教程吗?不管你看没看过,我反正是没看过!
  8. Computer Hardware ID(CHID)及驱动推送
  9. win10 系统下CAD2009缩放卡顿问题解决
  10. 在线qq客服的html代码生成器,js生成qq客服在线代码
  11. RVB2601应用开发实战系列六:网络播放器设计(二)
  12. 基于Android技术的物联网应用开发
  13. Extracting Data from XML
  14. 老人手机藏“吸费”陷阱
  15. 给定一个函数做其最佳平方逼近c语言,第三章 函数逼近 — 最佳平方逼近.
  16. js 判断是域名还是ip并获取当前url中指定部分
  17. Java的同步锁和同步方法(synchronized)
  18. leetcode 刷题ing
  19. 如何在服务器上配置深度学习环境
  20. transform: scale() 图片文字模糊的原因

热门文章

  1. Linux虚拟机:Centos6.5设置锁屏时间
  2. 用电子计算机控制海洋牧场,海洋牧场5S集成系统研究
  3. TrustZone不再安全 白帽黑客任意指纹解锁华为P9Lite
  4. SGI STL中的alloc
  5. 感悟人生 - 佛家经典语录
  6. 28家中国域名商保有量统计:有孚网络升至第十五
  7. 基于Python的购物篮频繁项集数据挖掘分析系统
  8. 响应式图片srcset未生效
  9. 用计算机弹奏lemon乐谱,游戏动态:原神乐谱lemon怎么弹 lemon乐谱弹奏方法教学...
  10. pve服务器自动开启pvp,魔兽8.0迎PVP有史以来最大改动,再也没有PVE和PVP服务器之分了...