先用matlab试试样本协方差:

>> X=[1,3;2,4;0,6]

X =

1     3
     2     4
     0     6

注意,行表示样本点,列表示属性列向量。以前使用matlab习惯用列向量表示点。

以下去除平均值、中心化(类似移动坐标系到样本质心)

>> removMeanX=X-[mean(X);mean(X);mean(X)]

removMeanX =

0   -1.3333
    1.0000   -0.3333
   -1.0000    1.6667

以下表示中心化前后样本协方差不变,注意样本方差是对各属性列而言。

>> covX=cov(X)

covX =

1.0000   -1.0000
   -1.0000    2.3333

>> covRemovMeanX=cov(removMeanX)

covRemovMeanX =

1.0000   -1.0000
   -1.0000    2.3333

以下表示中心化后,样本协方差可用各属性列点积得到,默认的cov()得到的是样本无偏协方差。

(removMeanX'*removMeanX类似样本惯性矩阵,对角为惯性矩,其他为惯性积。)

>> covRemovMeanX_getByDot=removMeanX'*removMeanX/(3-1)

covRemovMeanX_getByDot =

1.0000   -1.0000
   -1.0000    2.3333

>> [V,D]=eig(covRemovMeanX)

V =

-0.8817   -0.4719
   -0.4719    0.8817

D =

0.4648         0
         0    2.8685

>> V*D

ans =

-0.4098   -1.3535
   -0.2193    2.5291

>> D*V

ans =

-0.4098   -0.2193
   -1.3535    2.5291

>> covRemovMeanX*V

ans =

-0.4098   -1.3535
   -0.2193    2.5291

(设样本中心化后坐标系为Er,惯性主坐标系为Ep,则V为Er到Ep的过渡矩阵,其列向量(特征向量)为Ep的单位基在Er下的投影坐标

# coding=utf-8
'''
Created on Jun 1, 2011
@author: Peter Harrington
'''
from numpy import *
def loadDataSet(fileName, delim='\t'):
fr = open(fileName)
stringArr = [line.strip().split(delim) for line in fr.readlines()]
datArr = [list(map(float,line)) for line in stringArr]
return mat(datArr)
def pca(dataMat, topNfeat=9999999):
meanVals = mean(dataMat, axis=0)
meanRemoved = dataMat - meanVals #remove mean
covMat = cov(meanRemoved, rowvar=0)
eigVals,eigVects = linalg.eig(mat(covMat))
eigValInd = argsort(eigVals)            #sort, sort goes smallest to largest
eigValInd = eigValInd[:-(topNfeat+1):-1]  #cut off unwanted dimensions
redEigVects = eigVects[:,eigValInd]       #reorganize eig vects largest to smallest
lowDDataMat = meanRemoved * redEigVects#transform data into new dimensions
reconMat = (lowDDataMat * redEigVects.T) + meanVals
return lowDDataMat, reconMat
dataMat=loadDataSet(r'C:\Users\li\Downloads\machinelearninginaction\Ch13\testSet.txt')
lowDMat,reconMat=pca(dataMat,1)
print(shape(lowDMat))
import matplotlib.pyplot as plt
fig=plt.figure()
ax=fig.add_subplot(111)
ax.scatter(dataMat[:,0].flatten().A[0],dataMat[:,1].flatten().A[0],marker='^',s=90)
ax.scatter(reconMat[:,0].flatten().A[0],reconMat[:,1].flatten().A[0],marker='o',s=50,c='red')
plt.show()

机器学习实战:PCA降维 样本协方差相关推荐

  1. 机器学习实战——PCA降维

    文章目录 1 降维技术 2 PCA 2.1 移动坐标轴 2.2 在NumPy中实现PCA 3 示例:利用PCA对半导体制造数据降维 4 总结 Dimensionality reduction tech ...

  2. 机器学习算法-PCA降维技术

    机器学习算法-PCA降维 一.引言 在实际的数据分析问题中我们遇到的问题通常有较高维数的特征,在进行实际的数据分析的时候,我们并不会将所有的特征都用于算法的训练,而是挑选出我们认为可能对目标有影响的特 ...

  3. 人工智障学习笔记——机器学习(11)PCA降维

    一.概念 Principal Component Analysis(PCA):主成分分析法,是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中表示,即把原先的n个特征用 ...

  4. 机器学习之PCA降维

    PCA之降维与可视化 一.PCA 降维 1.使用使用sklearn自带数据集load_breast_cancer from sklearn import datasets cancer = datas ...

  5. 机器学习实战8-sklearn降维(PCA/LLE)

    官方地址:https://github.com/apachecn/hands-on-ml-zh/blob/master/docs/8.%E9%99%8D%E7%BB%B4.md 一.简介 许多机器学习 ...

  6. 【Python机器学习】PCA降维算法讲解及二维、高维数据可视化降维实战(附源码 超详细)

    需要全部代码请点赞关注收藏后评论区留言私信~~~ 维数灾难 维数灾难是指在涉及到向量计算的问题中,当维数增加时,空间的体积增长得很快,使得可用的数据在空间中的分布变得稀疏,向量的计算量呈指数倍增长的一 ...

  7. 机器学习实战-PCA算法-26

    PCA算法-手写数字降维可视化 from sklearn.neural_network import MLPClassifier from sklearn.datasets import load_d ...

  8. 机器学习实战(十二)降维(PCA、SVD)

    目录 0. 前言 1. 主成分分析PCA(Principal Component Analysis) 2. 奇异值分解SVD(Singular Value Decomposition) 3. 低维空间 ...

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

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

最新文章

  1. 09 Storage Structure and Relationships
  2. 开发者们的迷茫期,该怎么看破?
  3. python中defaultdict()函数的介绍以及应用场景
  4. 深度学习不能取代计算机视觉技术背后的真正原因
  5. 阡陌路-车行天下之新手必备手册
  6. win10安装tensorflow (cpu版)
  7. java缓存怎么用_java开发应该如何缓存?
  8. ClickHouse入门
  9. python传中文参数_解决Python传递中文参数的问题
  10. 信息学奥赛一本通(1239:统计数字)
  11. Mysql 优化(学习笔记二十)
  12. C语言实训作业PPT,C语言实训作业.docx
  13. MPEG-2码流结构分析
  14. 数据结构_满二叉树、完全二叉树、二叉排序树、平衡二叉树
  15. 智引IT综合管理解决方案
  16. 聊聊激光雷达原理之i-TOF
  17. 无人机倾斜摄影重建实景三维模型
  18. 使用easywechat调用微信支付
  19. 微博相册下载助手v7.2 微博图片批量下载神器
  20. Repeated DNA

热门文章

  1. Cassandra 简介
  2. Map 和 WeakMap
  3. 面试精讲之面试考点及大厂真题 - 分布式专栏 11 Redis热点key大Value解决方案
  4. 容器编排技术 -- Kubernetes DNS Pod 与 Service 介绍
  5. 在Centos7 更改Docker默认镜像和容器的位置
  6. js调用android本地java代码
  7. android 记一次解决键盘遮挡问题
  8. 让你惊叹的 Markdown 写作工具推荐
  9. 【Python】BMI指数 计算器
  10. C#算法设计排序篇之07-希尔排序(附带动画演示程序)