python实现PCA降维的示例详解


Posted in Python onFebruary 24, 2020

概述

本文主要介绍一种降维方法,PCA(Principal Component Analysis,主成分分析)。降维致力于解决三类问题。

1. 降维可以缓解维度灾难问题;

2. 降维可以在压缩数据的同时让信息损失最小化;

3. 理解几百个维度的数据结构很困难,两三个维度的数据通过可视化更容易理解。

PCA简介

在理解特征提取与处理时,涉及高维特征向量的问题往往容易陷入维度灾难。随着数据集维度的增加,算法学习需要的样本数量呈指数级增加。有些应用中,遇到这样的大数据是非常不利的,而且从大数据集中学习需要更多的内存和处理能力。另外,随着维度的增加,数据的稀疏性会越来越高。在高维向量空间中探索同样的数据集比在同样稀疏的数据集中探索更加困难。

主成分分析也称为卡尔胡宁-勒夫变换(Karhunen-Loeve Transform),是一种用于探索高维数据结构的技术。PCA通常用于高维数据集的探索与可视化。还可以用于数据压缩,数据预处理等。PCA可以把可能具有相关性的高维变量合成线性无关的低维变量,称为主成分( principal components)。新的低维数据集会尽可能的保留原始数据的变量。

PCA将数据投射到一个低维子空间实现降维。例如,二维数据集降维就是把点投射成一条线,数据集的每个样本都可以用一个值表示,不需要两个值。三维数据集可以降成二维,就是把变量映射成一个平面。一般情况下,nn维数据集可以通过映射降成kk维子空间,其中k≤nk≤n。

假如你是一本养花工具宣传册的摄影师,你正在拍摄一个水壶。水壶是三维的,但是照片是二维的,为了更全面的把水壶展示给客户,你需要从不同角度拍几张图片。下图是你从四个方向拍的照片:

python实现PCA降维的示例详解

第一张图里水壶的背面可以看到,但是看不到前面。第二张图是拍前面,可以看到壶嘴,这张图可以提供了第一张图缺失的信息,但是壶把看不到了。从第三张俯视图里无法看出壶的高度。第四张图是你真正想要的,水壶的高度,顶部,壶嘴和壶把都清晰可见。

PCA的设计理念与此类似,它可以将高维数据集映射到低维空间的同时,尽可能的保留更多变量。PCA旋转数据集与其主成分对齐,将最多的变量保留到第一主成分中。假设我们有下图所示的数据集:

python实现PCA降维的示例详解

数据集看起来像一个从原点到右上角延伸的细长扁平的椭圆。要降低整个数据集的维度,我们必须把点映射成一条线。下图中的两条线都是数据集可以映射的,映射到哪条线样本变化最大?

python实现PCA降维的示例详解

显然,样本映射到黑色虚线的变化比映射到红色点线的变化要大的多。实际上,这条黑色虚线就是第一主成分。第二主成分必须与第一主成分正交,也就是说第二主成分必须是在统计学上独立的,会出现在与第一主成分垂直的方向,如下图所示:

python实现PCA降维的示例详解

后面的每个主成分也会尽量多的保留剩下的变量,唯一的要求就是每一个主成分需要和前面的主成分正交。

现在假设数据集是三维的,散点图看起来像是沿着一个轴旋转的圆盘。

python实现PCA降维的示例详解

这些点可以通过旋转和变换使圆盘完全变成二维的。现在这些点看着像一个椭圆,第三维上基本没有变量,可以被忽略。

当数据集不同维度上的方差分布不均匀的时候,PCA最有用。(如果是一个球壳形数据集,PCA不能有效的发挥作用,因为各个方向上的方差都相等;没有丢失大量的信息维度一个都不能忽略)。

python实现PCA降维代码

# coding=utf-8
from sklearn.decomposition import PCA 
from pandas.core.frame import DataFrame
import pandas as pd 
import numpy as np 
l=[]
with open('test.csv','r') as fd:
 
  line= fd.readline()
  while line:
    if line =="":
      continue
 
    line = line.strip()
    word = line.split(",")
    l.append(word)
    line= fd.readline()
 
data_l=DataFrame(l)
print (data_l)
dataMat = np.array(data_l) 
 
 
pca_sk = PCA(n_components=2) 
newMat = pca_sk.fit_transform(dataMat) 
 
 
data1 = DataFrame(newMat)
data1.to_csv('test_PCA.csv',index=False,header=False)

以上这篇python实现PCA降维的示例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中用altzone()方法处理时区的教程
May 22 Python
Python字符串拼接六种方法介绍
Dec 18 Python
Python在Matplotlib图中显示中文字体的操作方法
Jul 29 Python
python集成开发环境配置(pycharm)
Feb 14 Python
python使用梯度下降算法实现一个多线性回归
Mar 24 Python
python3安装OCR识别库tesserocr过程图解
Apr 02 Python
matplotlib 对坐标的控制,加图例注释的操作
Apr 17 Python
解决Python数据可视化中文部分显示方块问题
May 16 Python
Django实现后台上传并显示图片功能
May 29 Python
Python sqlalchemy时间戳及密码管理实现代码详解
Aug 01 Python
基于logstash实现日志文件同步elasticsearch
Aug 06 Python
Python爬虫:从m3u8文件里提取小视频的正确操作
May 14 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
Feb 24 #Python
python 线性回归分析模型检验标准--拟合优度详解
Feb 24 #Python
最小二乘法及其python实现详解
Feb 24 #Python
在Python 的线程中运行协程的方法
Feb 24 #Python
Python 爬取必应壁纸的实例讲解
Feb 24 #Python
Python unittest工作原理和使用过程解析
Feb 24 #Python
Python 剪绳子的多种思路实现(动态规划和贪心)
Feb 24 #Python
You might like
珊瑚虫IP库浅析
2007/02/15 PHP
CakePHP去除默认显示的标题及图标的方法
2008/10/22 PHP
一个简洁的PHP可逆加密函数(分享)
2013/06/06 PHP
PHP+apc+ajax实现的ajax_upload上传进度条代码
2016/01/25 PHP
PHP标准类(stdclass)用法示例
2016/09/28 PHP
PHP模拟http请求的方法详解
2016/11/09 PHP
PHP单元测试框架PHPUnit用法详解
2019/01/23 PHP
PHP进阶学习之依赖注入与Ioc容器详解
2019/06/19 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
2020/04/27 PHP
juqery 学习之四 筛选查找
2010/11/30 Javascript
解决JQeury显示内容没有边距内容紧挨着浏览器边线
2013/12/20 Javascript
jquery动态添加option示例
2013/12/30 Javascript
基于jQuery实现的扇形定时器附源码下载
2015/10/20 Javascript
[原创]Javascript 实现广告后加载 可加载百度谷歌联盟广告
2016/05/11 Javascript
node.js学习之交互式解释器REPL详解
2016/12/08 Javascript
AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能示例
2018/04/21 Javascript
基于vue2.0实现仿百度前端分页效果附实现代码
2018/10/30 Javascript
jQuery实现的自定义轮播图功能详解
2018/12/28 jQuery
js简单粗暴的发布订阅示例代码
2021/01/23 Javascript
[53:03]Optic vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python入门之modf()方法的使用
2015/05/15 Python
详解Python并发编程之从性能角度来初探并发编程
2019/08/23 Python
python中几种自动微分库解析
2019/08/29 Python
python网络编程之多线程同时接受和发送
2019/09/03 Python
详解Python中的路径问题
2020/09/02 Python
印度首选时尚目的地:Reliance Trends
2018/01/17 全球购物
GANT葡萄牙官方商店:拥有美国运动服传统的生活方式品牌
2018/10/18 全球购物
Linden Leaves官网:新西兰纯净护肤品
2020/12/20 全球购物
设计总监岗位职责
2013/12/07 职场文书
烟台的海导游词
2015/02/02 职场文书
工程部部长岗位职责
2015/02/12 职场文书
医药公司采购员岗位职责
2015/04/03 职场文书
建筑质检员岗位职责
2015/04/08 职场文书
2016年优秀共青团员事迹材料
2016/02/25 职场文书
Java实现贪吃蛇游戏的示例代码
2022/09/23 Java/Android