Python数据挖掘笔记 七 .PCA降维操作及subplot子图绘制
这篇文章主要介绍四个知识点,也是我那节课讲课的内容。1.PCA降维操作;2.Python中Sklearn的PCA扩展包;3.Matplotlib的subplot函数绘制子图;4.通过Kmeans对糖尿病数据集进行聚类,并绘制子图。
一. PCA降维
为了减少存储量和计算时间,我们需要考虑降低问题的维度,丢弃不相关的特征。
特征降维一般有两类方法:特征选择(Feature Selection)和特征提取(Feature Extraction)。1.特征选择是从高纬度的特征中选择其中的一个子集来作为新的特征。最佳子集是以最少的维贡献最大的正确率,丢弃不重要的维,使用合适的误差函数进行,方法包括在向前选择(Forword Selection)和在向后选择(Backward Selection)。2.特征提取是指将高纬度的特征经过某个函数映射至低纬度作为新的特征。常用的特征抽取方法就是PCA(主成分分析)和LDA(线性判别分析) 。
主成分分析(Principal Component Analysis,PCA)
是一种常用的线性降维数据分析方法,其实质是在能尽可能好的代表原特征的情况下,将原特征进行线性变换、映射至低纬度空间中。二. Python中Sklearn的PCA扩展包
案例一:
import numpy as np
from sklearn.decomposition import PCA
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
pca = PCA(n_components=2)
print (pca)
pca.fit(X)
print(pca.explained_variance_ratio_)
案例二
如载入boston数据集,总共13个特征,降维成两个特征:
#载入数据集
from sklearn.datasets import load_boston
d = load_boston()
x = d.data
y = d.target
print (x[:10])
print (u'形状:', x.shape)#降维
import numpy as np
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
newData = pca.fit_transform(x)
print (u'降维后数据:')
print (newData[:4])
print (u'形状:', newData.shape)三. Kmeans聚类糖尿病及降维subplot绘制子图Matplotlib 里的常用类的包含关系为 Figure -> Axes -> (Line2D, Text, etc.)。一个Figure对象可以包含多个子图(Axes),在matplotlib中用Axes对象表示一个绘图区域,可以理解为子图。可以使用subplot()快速绘制包含多个子图的图表,它的调用形式如下:
当前的图表和子图可以使用gcf()和gca()获得,它们分别是“Get Current Figure”和“Get Current Axis”的开头字母缩写。
下面我们在Python中运行程序,然后调用gcf()和gca()查看当前的Figure和Axes对象。
import numpy as np
import matplotlib.pyplot as pltplt.figure(1) # 创建图表1plt.figure(2) # 创建图表2
ax1 = plt.subplot(211) # 在图表2中创建子图1
ax2 = plt.subplot(212) # 在图表2中创建子图2x = np.linspace(0, 3, 100)
for i in range(5):plt.figure(1)    # 选择图表1 plt.plot(x, np.exp(i*x/3))plt.sca(ax1)    # 选择图表2的子图1plt.plot(x, np.sin(i*x))plt.sca(ax2)    # 选择图表2的子图2plt.plot(x, np.cos(i*x))plt.show()
下面这个例子是通过Kmeans聚类,数据集是load_diabetes载入糖尿病数据集,然后使用PCA对数据集进行降维操作,降低成两维,最后分别聚类为2类、3类、4类和5类,通过subplot显示子图。
# -*- coding: utf-8 -*-#糖尿病数据集
from sklearn.datasets import load_diabetes
data = load_diabetes()
x = data.data
print (x[:4])
y = data.target
print (y[:4])#KMeans聚类算法
from sklearn.cluster import KMeans
#训练
clf = KMeans(n_clusters=2)
print (clf)
clf.fit(x)
#预测
pre = clf.predict(x)
print (pre[:10])#使用PCA降维操作
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
newData = pca.fit_transform(x)
print (newData[:4])L1 = [n[0] for n in newData]
L2 = [n[1] for n in newData]#绘图
import numpy as np
import matplotlib.pyplot as plt#用来正常显示中文标签
plt.rc('font', family='SimHei', size=8)
#plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示负号
plt.rcParams['axes.unicode_minus']=False p1 = plt.subplot(221)
plt.title(u"Kmeans聚类 n=2")
plt.scatter(L1,L2,c=pre,marker="s")
plt.sca(p1)###################################
# 聚类 类蔟数=3clf = KMeans(n_clusters=3)
clf.fit(x)
pre = clf.predict(x)p2 = plt.subplot(222)
plt.title("Kmeans n=3")
plt.scatter(L1,L2,c=pre,marker="*")
plt.sca(p2)###################################
# 聚类 类蔟数=4clf = KMeans(n_clusters=4)
clf.fit(x)
pre = clf.predict(x)p3 = plt.subplot(223)
plt.title("Kmeans n=4")
plt.scatter(L1,L2,c=pre,marker="+")
plt.sca(p3)###################################
# 聚类 类蔟数=5clf = KMeans(n_clusters=5)
clf.fit(x)
pre = clf.predict(x)p4 = plt.subplot(224)
plt.title("Kmeans n=5")
plt.scatter(L1,L2,c=pre,marker="o")
plt.sca(p4)#保存图片本地
plt.savefig('power.png', dpi=300)
plt.show()

Python数据挖掘笔记 七 .PCA降维操作及subplot子图绘制相关推荐

  1. 【Python数据挖掘课程】七.PCA降维操作及subplot子图绘制

    这篇文章主要介绍四个知识点,也是我那节课讲课的内容.         1.PCA降维操作:         2.Python中Sklearn的PCA扩展包:         3.Matplotlib的 ...

  2. python中figure函数_Python figure参数及subplot子图绘制代码

    1. Python的figure参数主要有: def figure(num=None, # autoincrement if None, else integer from 1-N figsize=N ...

  3. python数据降维_使用python实现多维数据降维操作

    一,首先介绍下多维列表的降维 def flatten(a): for each in a: if not isinstance(each,list): yield each else: yield f ...

  4. python数据挖掘笔记】二十.KNN最近邻分类算法分析详解及平衡秤TXT数据集读取

    #2018-04-06 07:57:00 April Friday the 14 week, the 096 day SZ SSMR python数据挖掘笔记]二十.KNN最近邻分类算法分析详解及平衡 ...

  5. python多维数组怎么降维_使用python实现多维数据降维操作

    一,首先介绍下多维列表的降维 def flatten(a): for each in a: if not isinstance(each,list): yield each else: yield f ...

  6. python数据挖掘学习】十五.Matplotlib调用imshow()函数绘制热图

    python数据挖掘学习]十五.Matplotlib调用imshow()函数绘制热图 #2018-03-28 14:47:19 March Wednesday the 13 week, the 087 ...

  7. python代码画简单图-Python figure参数及subplot子图绘制代码

    1. Python的figure参数主要有: def figure(num=None, # autoincrement if None, else integer from 1-N figsize=N ...

  8. python数据挖掘笔记】十八.线性回归及多项式回归分析四个案例分享

    python数据挖掘课程]十八.线性回归及多项式回归分析四个案例分享 #2018-03-30 18:24:56 March Friday the 13 week, the 089 day SZ SSM ...

  9. 【Python学习】 - sklearn - PCA降维相关

    1.PCA算法介绍 主成分分析(Principal Components Analysis),简称PCA,是一种数据降维技术,用于数据预处理.一般我们获取的原始数据维度都很高,比如1000个特征,在这 ...

最新文章

  1. webservice中cxf框架的HelloWord
  2. Objective-C学习笔记(十九)——对象方法和类方法的相互调用
  3. 关于tcp和http
  4. 【网络流专练一】UVA五题(UVA12125,UVA11082,UVA10983,UVA1306,UVA10735)
  5. 汇编语言学习——第四章 第一个汇编程序
  6. 命令行cd到_前端(只)需要掌握这些命令行(就还行了)
  7. 编译cubieboard android 源码过程详解之(六):pack
  8. Windows Phone 获取联系人
  9. InnoDB存储引擎介绍-(7) Innodb数据页结构
  10. SHA1withRSA加签名和验签名
  11. LINUX SHELL中while循环和遍历参数
  12. 企业网站建设如何选择企业cms系统
  13. 双efi分区同时引导失败修复经验
  14. 大数据在金融行业的应用
  15. 核心业务2:借款人申请借款额度
  16. 我想知道如何用风扇自制水空调?
  17. 牛气霸屏v4.1.8
  18. 实施配置 b/s 架构 webERP
  19. C++判断字符串是否为回文的方法
  20. linux下杀死全部进程,linux下批量杀死进程

热门文章

  1. 基于socket通信实现Ftp连接
  2. kafka tool报错:Error fetching datea.Offset out of range
  3. 开源框架openresty+nginx 实现web应用防火墙(WAF)
  4. [Winform] DataGridView辅助类
  5. sql 连接数不释放 ,Druid异常:wait millis 40000, active 600, maxActive 600
  6. Python collections的使用
  7. mybatis 多参数处理
  8. VM安装CentOs7虚拟机后无法上网之解决方法
  9. 大型网站技术架构(八)--网站的安全架构(转)
  10. ApacheCN Pandas 教程集