全栈工程师开发手册 (作者:栾鹏)

python数据挖掘系列教程

PCA主成分分析

准确的PCA和概率解释:

PCA 用于对一组连续正交分量中的多变量数据集进行方差最大方向的分解。 在 scikit-learn 中, PCA 被实现为一个变换对象, 通过 fit 方法可以降维成 n 个成分, 并且可以将新的数据投影(project, 亦可理解为分解)到这些成分中。

可选参数 whiten=True 使得可以将数据投影到奇异(singular)空间上,同时将每个成分缩放到单位方差。 如果下游模型对信号的各向同性作出强烈的假设,这通常是有用的,例如,使用RBF内核的 SVM 算法和 K-Means 聚类算法。

增量PCA (Incremental PCA)

PCA 对象非常有用, 但对大型数据集有一定的限制。 最大的限制是 PCA 仅支持批处理,这意味着所有要处理的数据必须适合主内存。 IncrementalPCA 对象使用不同的处理形式使之允许部分计算, 这一形式几乎和 PCA 以小型批处理方式处理数据的方法完全匹配。 IncrementalPCA 可以通过以下方式实现核外(out-of-core)主成分分析:

  • 使用 partial_fit 方法从本地硬盘或网络数据库中以此获取数据块。
  • 通过 numpy.memmap 在一个 memory mapped file 上使用 fit 方法。
    IncrementalPCA 仅存储成分和噪声方差的估计值,并按顺序递增地更新解释方差比(explained_variance_ratio_)。

这就是为什么内存使用取决于每个批次的样本数,而不是数据集中要处理的样本数。

PCA 使用随机SVD

通过丢弃具有较低奇异值的奇异向量成分,将数据降维到低维空间并保留大部分方差是非常有意义的。
可选参数 svd_solver=‘randomized’ 的 PCA 是非常有用的。 因为我们将要丢弃大部分奇异值,所以对我们将保留并实际执行变换的奇异向量进行近似估计的有限的计算更有效。

# # ======================PCA主成分分析=================
# # 花卉样本数据集
# from sklearn import datasets
# import matplotlib.pyplot as plt
# import numpy as np
# iris = datasets.load_iris()
# X = iris.data
# y = iris.target
## from sklearn.decomposition import PCA,IncrementalPCA   # 主成分分析(PCA)
# pca = PCA(n_components=2)  # PCA降维到2维
# X_pca = pca.fit_transform(X)
#
# ipca = IncrementalPCA(n_components=2, batch_size=10)  # 增量PCA降维到2维
# X_ipca = ipca.fit_transform(X)
#
# pca = PCA(n_components=2, svd_solver='randomized', whiten=True)  # PCA 使用随机SVD
# X_pca1 = pca.fit_transform(X)
#
#
# # 绘制PCA降维后的显示
# plt.subplot(131)
# plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, alpha=.8, lw=2)
# plt.title('PCA')
#
# # 绘制增量PCA降维后的显示
# plt.subplot(132)
# plt.scatter(X_ipca[:, 0], X_ipca[:, 1], c=y, alpha=.8, lw=2)
# plt.title('IPCA')
#
# # 绘制PCA使用随机SVD降维后的显示
# plt.subplot(133)
# plt.scatter(X_pca1[:, 0], X_pca1[:, 1], c=y, alpha=.8, lw=2)
# plt.title('PCA with rand SVD')
# plt.show()

核PCA

KernelPCA 是 PCA 的扩展,通过使用核方法实现非线性降维(dimensionality reduction)

# ======================核PCA主成分分析=================
from sklearn.datasets import make_circles
from sklearn.decomposition import PCA, KernelPCA
import matplotlib.pyplot as plt
import numpy as np
X, y = make_circles(n_samples=400, factor=.3, noise=.05)  # 生成样本数据集kpca = KernelPCA(kernel="rbf", fit_inverse_transform=True, gamma=10)  # 核PCA降维
X_kpca = kpca.fit_transform(X)
X_back = kpca.inverse_transform(X_kpca)pca = PCA(n_components=2)  # PCA降维到2维
X_pca = pca.fit_transform(X)# # 绘制原始数据
plt.subplot(221)
plt.scatter(X[:, 0], X[:, 1], c=y, alpha=.8, lw=2)
plt.title('Original space')# 绘制PCA降维后的显示
plt.subplot(222)
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, alpha=.8, lw=2)
plt.title('PCA')# 绘制KPCA降维后的显示
plt.subplot(223)
plt.scatter(X_kpca[:, 0], X_kpca[:, 1], c=y, alpha=.8, lw=2)
plt.title('KPCA')# 绘制逆空间的显示
plt.subplot(224)
plt.scatter(X_back[:, 0], X_back[:, 1], c=y, alpha=.8, lw=2)
plt.title('inverse space')plt.show()

稀疏主成分分析 ( SparsePCA 和 MiniBatchSparsePCA )

截断奇异值分解

因子分析

独立成分分析(ICA)

非负矩阵分解(NMF 或 NNMF)

隐 Dirichlet 分配(LDA)

python机器学习库sklearn——降维相关推荐

  1. Python机器学习库sklearn的安装

    Python机器学习库sklearn的安装 scikit-learn是Python的一个开源机器学习模块,它建立在NumPy,SciPy和matplotlib模块之上能够为用户提供各种机器学习算法接口 ...

  2. python机器学习库sklearn——决策树

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 决策树的相关的知识内容可以参考 http://blog.csdn.net/luanpeng825485697/article/deta ...

  3. python机器学习库sklearn与graphlab与opencv的安装

    1.安装python 首先安装python3.5 Link 然后安装python2.7 Link 注意选择合适的版本(记得之后安装的GraphLab只能用64位,也只能使用python2) 2.安装使 ...

  4. python机器学习库sklearn——特征提取

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 注意:特征特征提取与 特征选择 有很大的不同:前者包括将任意数据(如文本或图像)转换为可用于机器学习的数值特征.后者是将这些特征应用到 ...

  5. python机器学习库sklearn——集成方法(Bagging、Boosting、随机森林RF、AdaBoost、GBDT)

    分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 docker/kubernetes入门视频教程 全栈工程师开发手册 (作者:栾鹏) pyth ...

  6. python机器学习库sklearn——交叉验证(K折、留一、留p、随机)

    分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 学习预测函数的参数,并在相 ...

  7. python机器学习库sklearn——参数优化(网格搜索GridSearchCV、随机搜索RandomizedSearchCV、hyperopt)

    分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 优化的相关的知识内容可以参 ...

  8. python机器学习库sklearn——逻辑回归

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 逻辑分类的相关的知识内容可以参考 http://blog.csdn.net/luanpeng825485697/article/det ...

  9. python机器学习库sklearn——朴素贝叶斯分类器

    分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 文档贝叶斯分类器的相关的知 ...

最新文章

  1. 【spring】di(依赖注入)使用实例
  2. K-Means聚类算法原理
  3. Java高级规范之二
  4. linux c 实现try catch异常捕获
  5. 关于NTDDI_VERSION,_WIN32_WINNT,WINVER的含义
  6. 飞桨上线万能转换小工具,教你玩转TensorFlow、Caffe等模型迁移
  7. CUDA 4.0真技术解析
  8. rtsp 获取视频流 java_OpenCV - 如何捕获rtsp视频流
  9. MYSQL数据库表中字段追加字符串内容
  10. Java替换中使用正则表达式实现中间模糊匹配
  11. 【人工智能】归结演绎推理
  12. html如何隐藏input,html如何让input隐藏
  13. java字符串intern_String中intern方法的使用场景详解
  14. Centos7 搭建 Svn+ReviewBoard
  15. 【毕设】基于CycleGAN的风格迁移【二】CycleGAN源码解读
  16. pdfbox / XSL + FOP 转换 PDF文档
  17. PowerVR SDK 2020 Release 2发布:多处更新优化,性能更强大
  18. 自然语言处理之中文分词逆向最大匹配算法(RMM算法)
  19. isam2 优化pose graph
  20. CSS clip:rect矩形剪裁功能及一些应用介绍

热门文章

  1. 苹果测试集了成语音识别和人脸识别的智能家居?
  2. java try catch陷阱_java异常捕捉陷阱(内存泄漏,finally块,catch块,继承得到的异常)...
  3. python post 上传文件_python接口自动化7-post文件上传
  4. HTML-图像,音频,视频和路径
  5. LAV Filter 源代码分析 2: LAV Splitter
  6. python访问注册表_Python 操作注册表
  7. 一个不会画流程图的程序员不是一个好码农
  8. Java加权负载均衡策略
  9. hibernate查询出的实体,set值后,自动更新到数据库
  10. Kaggle入门预测赛,手写数字识别Digit Recognizer,使用Kaggle kernel作答,F=0.98