对于维数比较多的数据,首先需要做的事就是在尽量保证数据本质的前提下将数据中的维数降低。降维是一种数据集预处理技术,往往在数据应用在其他算法之前使用,它可以去除掉数据的一些冗余信息和噪声,使数据变得更加简单高效,从而实现提升数据处理速度的目的,节省大量的时间和成本。降维也成为了应用非常广泛的数据预处理方法。目前处理降维的技术有很多种,如SVD奇异值分解,主成分分析(PCA),因子分析(FA),独立成分分析(ICA)等。

  以下是使用主成分分析(PCA)进行降维:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn.datasets.samples_generator import make_blobs
from sklearn.decomposition import PCA def show_scatter(data,nfigure,n_axe):
num=data.shape[1]
if num==2:
fig.add_subplot(nfigure,1,n_axe)
plt.scatter(data[:,0],data[:,1],marker='o')
elif num==3:
fig.add_subplot(nfigure,1,n_axe,projection='3d')
plt.scatter(data[:,0],data[:,1],data[:,2],marker='o') def pca_components(component,X):
if isinstance(component,str):
pca_n=PCA(n_components=component,svd_solver='full')
print(component)
else:
pca_n=PCA(n_components=component)
print(component)
newData_n=pca_n.fit_transform(X)
print('主成分方差比例:',pca_n.explained_variance_ratio_)
print('主成分方差:',pca_n.explained_variance_)
return newData_n X,y=make_blobs(n_samples=10000,n_features=3,centers=[[3,3,3],
[0,0,0],[1,1,1],[2,2,2]],cluster_std=[0.2,0.1,0.2,0.2],
random_state=9) n_components=[2,0.95,0.99,'mle'] fig=plt.figure(figsize=(8,12) ) show_scatter(X,len(n_components)+1,n_axe=1) for i,component in zip(range(len(n_components)),n_components):
newData=pca_components(component,X)
show_scatter(newData,len(n_components)+1,n_axe=i+2)

输出结果:

2
主成分方差比例: [ 0.98318212 0.00850037]
主成分方差: [ 3.78521638 0.03272613]
0.95
主成分方差比例: [ 0.98318212]
主成分方差: [ 3.78521638]
0.99
主成分方差比例: [ 0.98318212 0.00850037]
主成分方差: [ 3.78521638 0.03272613]
mle
主成分方差比例: [ 0.98318212]
主成分方差: [ 3.78521638]

机器学习--用PCA算法实现三维样本降到二维的更多相关文章

  1. 机器学习--主成分分析(PCA)算法的原理及优缺点

    一.PCA算法的原理 PCA(principle component analysis),即主成分分析法,是一个非监督的机器学习算法,是一种用于探索高维数据结构的技术,主要用于对数据的降维,通过降维可 ...

  2. Matlab绘制三维曲面(以二维高斯函数为例)

    原文地址为:Matlab绘制三维曲面(以二维高斯函数为例) 寒假学习了一下Python下的NumPy和pymatlab,感觉不是很容易上手.来学校之后,决定继续看完数字图像处理一书.还是想按照上学期的 ...

  3. Python 迭代器&生成器,装饰器,递归,算法基础:二分查找、二维数组转换,正则表达式,作业:计算器开发

    本节大纲 迭代器&生成器 装饰器  基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - ...

  4. 基于深度学习的病毒检测技术无需沙箱环境,直接将样本文件转换为二维图片,进而应用改造后的卷积神经网络 Inception V4 进行训练和检测

    话题 3: 基于深度学习的二进制恶意样本检测 分享主题:全球正在经历一场由科技驱动的数字化转型,传统技术已经不能适应病毒数量飞速增长的发展态势.而基于沙箱的检测方案无法满足 APT 攻击的检测需求,也 ...

  5. 用三维的视角理解二维世界:完美解释meshgrid函数,三维曲面,等高线,看完你就懂了。...

    完美解释meshgrid函数,三维曲面,等高线 #用三维的视角理解二维世界 #完美解释meshgrid函数,三维曲面,等高线 import numpy as np import matplotlib. ...

  6. 【opencv】 solvepnp 和 solvepnpRansac 求解 【空间三维坐标系 到 图像二维坐标系】的 三维旋转R 和 三维平移 T 【opencv2使用solvepnp求解rt不准的问题】

    参考: pnp问题 与 solvepnp函数:https://www.jianshu.com/p/b97406d8833c 对图片进行二维仿射变换cv2.warpAffine() or 对图片进行二维 ...

  7. numpy中三维数组转变成二维数组

    numpy中reshape()函数对三维数组进行转换成二维数组,见下面例子: >>>a=np.reshape(np.arange(18),(3,3,2)) >>> ...

  8. Python算法之动态规划(Dynamic Programming)解析:二维矩阵中的醉汉(魔改版leetcode出界的路径数)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_168 现在很多互联网企业学聪明了,知道应聘者有目的性的刷Leetcode原题,用来应付算法题面试,所以开始对这些题进行" ...

  9. 算法模板——线段树6(二维线段树:区域加法+区域求和)(求助phile)

    实现功能——对于一个N×M的方格,1:输入一个区域,将此区域全部值作加法:2:输入一个区域,求此区域全部值的和 其实和一维线段树同理,只是不知道为什么速度比想象的慢那么多,求解释...@acphile ...

随机推荐

  1. 一起学Spring之基础篇

    本文主要讲解Spring的基础环境搭建以及演变由来,仅供学习分享使用,如有不足之处,还请指正. 什么是Spring ? Spring是一个开源框架,用来处理业务逻辑层和其他层之间的耦合问题.因此Spr ...

  2. WPF 3D 球面导览

    基于WPF的3D Sphere实现模式,升级实现了该3D导览Demo.先pose一张demo效果图 所有顶点的坐标来源于足球的顶点.足球整个球面完全由正五边形和正六边形拼成,每条拼缝的长度一致,故知道 ...

  3. Android框架式编程之Lifecycle

    Lifecycle官方文档地址:https://developer.android.com/topic/libraries/architecture/lifecycle. 一.为什么要使用Lifecy ...

  4. mysql与oracle的语法对比

    数据类型 编号 ORACLE MYSQL 注释 1 NUMBER int / DECIMAL DECIMAL就是NUMBER(10,2)这样的结构INT就是是NUMBER(10),表示整型:MYSQL ...

  5. IP安全,DDoS攻击、tearDrop攻击和微小IP碎片攻击

    目录 arp安全 IP报文格式 DoS攻击 tear drop攻击 微小碎片攻击 IP欺骗,留后门 arp安全 以太网帧的type =0806 表示arp arp攻击:hack伪造arp应答包给tar ...

  6. 检测值是否存在(??)(Freemarker的null值处理)

    使用形式: unsafe_expr?? 或 (unsafe_expr)?? 这个操作符告诉我们一个值是否存在.基于这种情况, 结果是 true 或 false. 访问非顶层变量的使用规则和默认值操作符 ...

  7. 如何在asm上定位数据块

    转自 https://blogs.oracle.com/database4cn/%e5%a6%82%e4%bd%95%e5%9c%a8asm%e4%b8%8a%e5%ae%9a%e4%bd%8d%e6 ...

  8. Excel 2003 与 Excel 2007之间有什么不同?

    如果您使用Excel 2003已有数年,您可能会意识到使用更多最新版本的Excel(2007.2010.2013或Excel 2016)的人员或组织的数量正在增加.您甚至可能收到了自己的Excel工作 ...

  9. JMeter系列教程

    认识JMeter工具 JMeter常用元件功能介绍 JMeter线程组 JMeter脚本三种录制方法 Jmeter组件介绍及其作用域和执行顺序 JMeter参数化 JMeter集合点 JMeter关联 ...

  10. 10. Vue - axios

    一.预备知识 1. JS面向对象 特点:ES5之前用构造函数方式,构造函数就是一个普通函数,它的函数名大写. 构造函数的问题:方法不会提升至构造函数内,而是每创建一个对象,就要把那个方法保存在每个对象 ...