<第一周>降维
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中用户管理命令/ ...
随机推荐
- ORC格式hive逻辑中case when问题
前阵子做hive开发发现orc格式文件使用case when情况下会造成nullcount会统计入内问题,修改为sum就没此问题.具体例子下次放假回来记录,现在不在公司,这里做个mark
- Window API 第五篇 WTSEnumerateProcesses
这个函数可用来枚举系统进程,先来看定义: BOOL WTSEnumerateProcesses( _In_ HANDLE hServer, _In_ DWORD ...
- bootstrap字体图标在IE上不显示
最简单的办法就是直接下载最新的bootstrap.css替换掉旧的. 但是由于我做的项目直接替换会出现样式冲突问题,因此只好慢慢找是什么属性导致图标不显示,最后找到了解决办法: 1.首先保字体文件的位 ...
- vue+element-ui 使用富文本编辑器
npm安装编辑器组件npm install vue-quill-editor –save 在components文件夹创建ue.vue组件,如下 ue.vue代码如下: <!-- 组件代码如下 ...
- java求1000以内的水仙花数
水仙花数是指一个 n 位数 ( n>=3 ),它的每个位上的数字的 n 次幂之和等于它本身.(例如:1^3 + 5^3 + 3^3 = 153) 三位的水仙花数共有4个,分别为:153.370. ...
- 新的开始 | Arthas GitHub Star 破万后的回顾和展望
一切新的开始,都始于一个里程碑. 2月20日上午,Java 开源诊断工具 Arthas 的 GitHub Star 突破10000,距离开源后的第一个Release 版发布仅 147 天. 从中,我们 ...
- Django项目:CRM(客户关系管理系统)--48--39PerfectCRM实现登录+验证码+过期时间+页面保留账号
# gbacc_urls.py # ————————38PerfectCRM实现全局账号登录注销———————— from django.conf.urls import url from gbacc ...
- 前端插件--swiper.js
使用swiper.js还要注意引入它的同时也要引入swiper.css样式文件: swiper官方文档:http://www.swiper.com.cn/api/effects/193.html 实例 ...
- 异步 I/O 和事件驱动
异步IO(asynchronous I/O) 首先来理解几个容易混淆的概念,阻塞IO(blocking I/O)和非阻塞IO(non-blocking I/O),同步IO(synchronous I/ ...
- HDU 3714
最大值最小问题,三分....竟然排第六当时..... #include<stdio.h> #include<string.h> #define max 10000+10 #de ...