PCA###

矩阵的主成分就是其协方差矩阵对应的特征向量,按照对应的特征值大小进行排序,最大的特征值为第一主成分,以此类推

主要过程####

  • 对所有样本进行中心化
  • 计算样本的协方差矩阵 XX.T
  • 对协方差矩阵做特征值分解
  • 取最大的几个特征向量

使用方法####

sklearn sklearn.decomposition.PCA

参数:

  • n_components
  • svd_solver auto默认 full arpack randomized 特征值分解的方法

对鸢尾花进行降维

# -*- coding: utf-8 -*-
"""
Created on Mon May 22 17:33:47 2017 @author: sfzyk
""" import numpy as np
import sklearn.decomposition as skld import matplotlib.pyplot as plt
from sklearn.datasets import load_iris data=load_iris()
#字典形式
y=data.target x=data.data
pca=skld.PCA(n_components=2)
reduced_x=pca.fit_transform(x) red_x=[]
red_y=[]
blue_x=[]
blue_y=[]
green_x=[]
green_y=[]
for i in range(len(reduced_x)):
if y[i]==0 :
red_x.append(reduced_x[i][0])
red_y.append(reduced_x[i][1])
elif y[i]==1:
blue_x.append(reduced_x[i][0])
blue_y.append(reduced_x[i][1])
elif y[i]==2:
green_x.append(reduced_x[i][0])
green_y.append(reduced_x[i][1]) #plt.plot(red_x,red_y,'or',blue_x,blue_y,'bo',green_x,green_y,'go')
plt.scatter(red_x,red_y)
plt.scatter(green_x,green_y)
plt.scatter(blue_x,blue_y)
plt.show()

非负矩阵分解###

NMF

给定非负矩阵V

NMF 可以找到一个W 与H 值使得WH近似等于矩阵V中的值

W矩阵 基础图像矩阵,相当于抽取出来的特征

H矩阵 稀疏矩阵

最小函数

传统上 欧氏距离

\( argmin\frac{1}{2}||X-WH||2=\frac{1}{2}(X_{ij}-WH_{ij})2\)

KL散度的求解方法

\( graminJ(W,H)= \sum_{ij}(X_{ij}ln\frac{X_ij}{WH_ij}-X_{ij}+WH_{ij}) \)

具体求解是迭代算法

sklearn.decomposition.NMF 算

参数####

  • n_components 用于只等分解后矩阵的单个维度k
  • init W矩阵和H矩阵初始化方式,默认为nndsvdar
  • ...

NMF的使用方法

NMF 人脸数据特征提取

设置k=6

            H k*400

W 4096k V 4096400

# -*- coding: utf-8 -*-
"""
Created on Wed May 24 12:06:56 2017 @author: sfzyk
""" import matplotlib.pyplot as plt
import sklearn.decomposition as skld
import sklearn.datasets as skldata
import numpy as np n_row,n_col=2,3
n_compeonents=6
image_shape=(64,64)
dataset=skldata.fetch_olivetti_faces(shuffle=True,random_state=np.random.RandomState(0))
def plot_gallery(title,images,n_col=n_col,n_row=n_row):
plt.figure(figsize=(2.*n_col,2.26*n_row))
plt.suptitle(title,size=16)
for i,comp in enumerate(images):
plt.subplot(n_row,n_col,i+1)
vmax=max(comp.max(),-comp.min())
plt.imshow(comp.reshape(image_shape),cmap=plt.cm.gray,interpolation='nearest',vmin=-vmax,vmax=vmax)
plt.subplots_adjust(0.01,0.05,0.99,0.93,0.04,0.) plot_gallery("RAW",dataset.images[0:6]) estimators=[('PCA',skld.PCA(n_components=6,whiten=True)),('NMF',skld.NMF(n_components=6,init='nndsvda',tol=5e-3))]
faces=dataset.data
for name,estimator in estimators:
estimator.fit(faces)
components_=estimator.components_
plot_gallery(name,components_[:])
plt.show()

最新文章

  1. java -日期处理
  2. Python’s SQLAlchemy vs Other ORMs[转发 2]Storm
  3. 删除ORACLE的步骤
  4. 用caffe跑自己的数据,基于WINDOWS的caffe
  5. Construct a tree from Inorder and Level order traversals
  6. iOS 如何给Xcode7项目添加“.pch”文件
  7. js后退一直停留在当前页面或者禁止后退
  8. vs2013中使用nuget下载cefsharp winform包
  9. mysql mysql_error mysqli_connect_error 乱码
  10. Ext入门学习系列(五)表格控件(1)
  11. FFMPEG视音频编解码零基础学习方法-b
  12. oracle函数Lpad与Rpad
  13. vs2015 不支持javascript的智能提示高亮
  14. smokeping安装部署最佳实践
  15. ReactJS入门:展示数据
  16. Winform远程更新代码
  17. 设置 NSZombieEnabled 定位 EXC_BAD_ACCESS 错误
  18. 遍历CheckBox根据指定条件做筛选js
  19. Highcharts开发图表
  20. 《深度探索C++对象模型》调用虚函数

热门文章

  1. P1080(python 高精度)
  2. 廖雪峰Java10加密与安全-4加密算法-1对称加密算法
  3. Data Lake Analytics: 读/写PolarDB的数据
  4. 2018.10.29安装tensorflow
  5. Django项目:CMDB(服务器硬件资产自动采集系统)--05--05CMDB采集硬件数据的插件
  6. iType.js仿输入文字效果
  7. Java虚拟机原理图解-- 1.2.2、Class文件中的常量池详解(上)[转]
  8. 转:PLL 锁相环
  9. 木卯先生的笔记---Object类
  10. Python学习之for循环--输出1-100中的偶数和登录身份认证