<第一周>降维
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中用户管理命令/ ...
随机推荐
- python-web-selenium模拟控制浏览器
用 selenium 模块控制浏览器 启动 selenium 控制的浏览器 from selenium import webdriver brower = webdriver.Firefox() br ...
- 将wordpress中的文章导出为markdown
一.进入wordpress后台,选择工具-导出数据,选择你需要导出的内容.文章等,会下载一个xml文件到本地电脑 二.使用一个名为wordpress-to-markdown的工具 源码地址:wordp ...
- Apache 禁用IP 访问 和 HTTP 跳转 HTTPS
如果需要 禁用IP 访问并且 需要 HTTP 跳转到 HTTPS <VirtualHost *:80> ServerName xxx.xxx.com RewriteEngine On Re ...
- odoo many2one
在xml中使many2one字段 不可点击 不可跳转 options="{'no_open': True, 'no_create': True}"
- Java的跨平台特性
语言跨平台是编译后的文件跨平台,而不是源程序跨平台.Java源代码首先经过编译器生成字节码,即class文件,该class文件与平台无关,而class文件经过解释执行之后翻译成最终的机器码,这是平台相 ...
- Vue+jquery上拉加载
<ul> <li class="new-list" v-for="item in proarr"> <a :href=" ...
- 如何用js造轮子
写了一个非常通俗易懂的造轮子的方法 <div class="wrap"></div> <div class="wrap">& ...
- javascript的Touch事件
js的touch事件,一般用于移动端的触屏滑动 $(function(){document.addEventListener("touchmove", _touch, false) ...
- jeecms各种标签类(大部分,并没有包含一些其他的如text_cut html_cut之类)
软件包 comjeecms.cms.action.directive 类摘要 ChannelDirective 栏目对象标签 ChannelListDirective 栏目列表标签 ChannelPa ...
- 原生JS实现动态时钟(优化)
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...