机器学习实战:PCA降维 样本协方差
先用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降维 样本协方差相关推荐
- 机器学习实战——PCA降维
文章目录 1 降维技术 2 PCA 2.1 移动坐标轴 2.2 在NumPy中实现PCA 3 示例:利用PCA对半导体制造数据降维 4 总结 Dimensionality reduction tech ...
- 机器学习算法-PCA降维技术
机器学习算法-PCA降维 一.引言 在实际的数据分析问题中我们遇到的问题通常有较高维数的特征,在进行实际的数据分析的时候,我们并不会将所有的特征都用于算法的训练,而是挑选出我们认为可能对目标有影响的特 ...
- 人工智障学习笔记——机器学习(11)PCA降维
一.概念 Principal Component Analysis(PCA):主成分分析法,是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中表示,即把原先的n个特征用 ...
- 机器学习之PCA降维
PCA之降维与可视化 一.PCA 降维 1.使用使用sklearn自带数据集load_breast_cancer from sklearn import datasets cancer = datas ...
- 机器学习实战8-sklearn降维(PCA/LLE)
官方地址:https://github.com/apachecn/hands-on-ml-zh/blob/master/docs/8.%E9%99%8D%E7%BB%B4.md 一.简介 许多机器学习 ...
- 【Python机器学习】PCA降维算法讲解及二维、高维数据可视化降维实战(附源码 超详细)
需要全部代码请点赞关注收藏后评论区留言私信~~~ 维数灾难 维数灾难是指在涉及到向量计算的问题中,当维数增加时,空间的体积增长得很快,使得可用的数据在空间中的分布变得稀疏,向量的计算量呈指数倍增长的一 ...
- 机器学习实战-PCA算法-26
PCA算法-手写数字降维可视化 from sklearn.neural_network import MLPClassifier from sklearn.datasets import load_d ...
- 机器学习实战(十二)降维(PCA、SVD)
目录 0. 前言 1. 主成分分析PCA(Principal Component Analysis) 2. 奇异值分解SVD(Singular Value Decomposition) 3. 低维空间 ...
- 【白话机器学习】算法理论+实战之PCA降维
1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,在这简单的先捋一捋, 常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支 ...
最新文章
- 09 Storage Structure and Relationships
- 开发者们的迷茫期,该怎么看破?
- python中defaultdict()函数的介绍以及应用场景
- 深度学习不能取代计算机视觉技术背后的真正原因
- 阡陌路-车行天下之新手必备手册
- win10安装tensorflow (cpu版)
- java缓存怎么用_java开发应该如何缓存?
- ClickHouse入门
- python传中文参数_解决Python传递中文参数的问题
- 信息学奥赛一本通(1239:统计数字)
- Mysql 优化(学习笔记二十)
- C语言实训作业PPT,C语言实训作业.docx
- MPEG-2码流结构分析
- 数据结构_满二叉树、完全二叉树、二叉排序树、平衡二叉树
- 智引IT综合管理解决方案
- 聊聊激光雷达原理之i-TOF
- 无人机倾斜摄影重建实景三维模型
- 使用easywechat调用微信支付
- 微博相册下载助手v7.2 微博图片批量下载神器
- Repeated DNA