<第一周>降维
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()
<第一周>降维的更多相关文章
- 第一周 总结笔记 / 斯坦福-Machine Learning-Andrew Ng
课程主页:https://www.coursera.org/learn/machine-learning/home/welcome 收集再多的资料也没用,关键是要自己理解总结,做笔记就是一个归纳总结的 ...
- Surprise团队第一周项目总结
Surprise团队第一周项目总结 团队项目 基本内容 五子棋(Gobang)的开发与应用 利用Android Studio设计一款五子棋游戏,并丰富其内涵 预期目标 实现人人模式:2个用户可以在同一 ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 20145206邹京儒《Java程序设计》第一周学习总结
20145206 <Java程序设计>第1周学习总结 教材学习内容总结 1.三大平台:Java SE.Java EE与Java ME.Java SE是各应用平台的基础,分为四个主要的部分: ...
- 20145304 刘钦令 Java程序设计第一周学习总结
20145304<Java程序设计>第1周学习总结 教材学习内容总结 1995年5月23日,是公认的Java的诞生日,Java正式由Oak改名为Java. Java的三大平台是:Java ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337《JAVA程序设计》第一周学习总结
# 20145337 <Java程序设计>第1周学习总结 ## 教材学习内容总结 第一章 -Java最早是Sun公司撰写Star7应用程序的程序语言 -根据应用领域不同,有Java SE. ...
- Linux内核设计第一周 ——从汇编语言出发理解计算机工作原理
Linux内核设计第一周 ——从汇编语言出发理解计算机工作原理 作者:宋宸宁(20135315) 一.实验过程 图1 编写songchenning5315.c文件 图2 将c文件汇编成32位机器语言 ...
- 20135328信息安全系统设计基础第一周学习总结(Linux应用)
学习计时:共xxx小时 读书: 代码: 作业: 博客: 一.学习目标 1. 能够独立安装Linux操作系统 2. 能够熟练使用Linux系统的基本命令 3. 熟练使用Linux中用户管理命令/ ...
随机推荐
- 编程之法:面试和算法心得(旋转字符串java实现)
内容全部来自编程之法:面试和算法心得一书,实现是自己写的使用的是java 题目描述 给定一个字符串,要求把字符串前面的若干个字符移动到字符串的尾部,如把字符串“abcdef”前面的2个字符'a'和'b ...
- DataSourceUtils(加入线程管理事务)
第一二见之前的文章: DataSourceUtils(使用C3P0连接池的工具类) 替换第三步: import java.sql.Connection; import java.sql.ResultS ...
- DBUtils(DataSourceUtils提供数据源)
DBUtils是apache组织的一个工具类,jdbc的框架,更方便我们使用 使用步骤: 1.导入jar包(commons-dbutils-1.4.jar,c3p0-0.9.1.2.jar) 1.1导 ...
- CentOS 6.5 源码编译搭建LAMP(两台独立主机实现)
搭建前准备: 1.两台独立主机 httpd:192.168.1.105 php-fpm:192.168.1.105 mariadb:192.168.1.103 2.相关软件的源码包 httpd:htt ...
- [bzoj2654] tree 最小生成树kruskal+二分
题目描述 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树.题目保证有解. 输入格式 第一行V,E,need分别表示点数,边数和需要的白色边数.接下来E行, ...
- 矩阵快速幂3 k*n铺方格
#include <iostream> #include <cstdlib> #include <cstring> #include <queue> # ...
- 深入浅出 Java Concurrency (12): 锁机制 part 7 信号量(Semaphore)[转]
Semaphore 是一个计数信号量.从概念上讲,信号量维护了一个许可集.如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可.每个 release() 添加一个许可,从而可能释放 ...
- eclipse环境问题-java版本不兼容
有时候虽然我们给项目配置的jdk版本.项目编译版本都一直,但是还是会报如下的错误: Description Resource Path Location Type Java compiler leve ...
- mysql知识点回顾与梳理
一.sql语句执行顺序 from join on where group by avg,sum,count等各种函数 having select distinct order by(asc(升序),d ...
- 使用video.js支持flv格式
html5的video标签只支持mp4.webm.ogg三种格式,不支持flv格式,在使用video.js时,如果使用html5是会报错不支持. 修改了一下代码 js部分 videojs.option ...