sklearn矩阵分解类库学习

2023-11-13

sklearn.decomposition模块提供矩阵分解算法、其他PCA、NMF 或ICA,其中大部分算法都被视为降维技术。

①主成分分析:sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False, svd_solver=’auto’, tol=0.0, iterated_power=’auto’, random_state=None)

主要参数说明:

n_components:参数主要用于指定保留的特征个数,其数据类型为整数、浮点数、None或字符型。若n_components为None时,表示保留所有特征;若n_components为整数时,表示保留的特征个数;若n_components为浮点数时,表示保留后特征的方差之和占所有特征方差的最小阈值;若n_components = ‘mle’ and svd_solver = ‘full’时,该算法会用MLE算法去选择保留的特征。

whiten:表示对保留后的特征数据是否进行标准化(转化成特征方差都为1)标识

svd_solver : SVD分解方式,可选项‘auto’, ‘full’, ‘arpack’, ‘randomized’

构建简单例子

In [1]: import numpy as np
   ...: import matplotlib.pyplot as plt
   ...: from mpl_toolkits.mplot3d import Axes3D
   ...: from sklearn.datasets.samples_generator import make_blobs
   ...: 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)
   ...: fig = plt.figure()
   ...: ax = Axes3D(fig, rect=[0, 0, 1, 1], elev=30, azim=20)
   ...: plt.scatter(X[:, 0], X[:, 1], X[:, 2],marker='o')
   ...: plt.show()
   ...:



利用PCA训练数据情况:

a、n_components=None,保留所有特征

In [2]: from sklearn.decomposition import PCA
   ...: pca = PCA()
   ...: pca.fit(X)
   ...: print(pca.n_components_)
   ...:
3
训练后,观察三个特征的方差及方差比

In [3]: pca.explained_variance_
Out[3]: array([ 3.78483785,  0.03272285,  0.03201892])

In [4]: pca.explained_variance_ratio_
Out[4]: array([ 0.98318212,  0.00850037,  0.00831751])
b、n_components为整数M,若M小于X的特征总数,则挑选前M个方差大的特征

In [5]: from sklearn.decomposition import PCA
   ...: pca = PCA(n_components=2)#保留2个特征值
   ...: pca.fit(X)
   ...: print(pca.explained_variance_)
   ...: print(pca.explained_variance_ratio_)
   ...:
[ 3.78483785  0.03272285]
[ 0.98318212  0.00850037]
c、n_components为浮点数,选择特征方差占比大于阈值n_components的最大特征方差且特征个数最小

In [6]: pca = PCA(n_components=0.006)
   ...: pca.fit(X)
   ...: print(pca.explained_variance_)
   ...: print(pca.explained_variance_ratio_)
   ...: print(pca.n_components_)
   ...:
[ 3.78483785]
[ 0.98318212]
1
d、n_components为mle时,svd_solver参数必须为full,否则报错

In [7]: pca = PCA(n_components='mle',svd_solver='full')
   ...: pca.fit(X)
   ...: print(pca.explained_variance_)
   ...: print(pca.explained_variance_ratio_)
   ...: print(pca.n_components_)
   ...:
[ 3.78483785]
[ 0.98318212]
1

In [8]: pca = PCA(n_components='mle',svd_solver='arpack')
   ...: pca.fit(X)
   ...:
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-8-b62bafac46ff> in <module>()
      1 pca = PCA(n_components='mle',svd_solver='arpack')
----> 2 pca.fit(X)

d:\softwore\python\lib\site-packages\sklearn\decomposition\pca.py in fit(self, X
, y)
    305             Returns the instance itself.
    306         """
--> 307         self._fit(X)
    308         return self
    309

d:\softwore\python\lib\site-packages\sklearn\decomposition\pca.py in _fit(self,
X)
    368             return self._fit_full(X, n_components)
    369         elif svd_solver in ['arpack', 'randomized']:
--> 370             return self._fit_truncated(X, n_components, svd_solver)
    371
    372     def _fit_full(self, X, n_components):

d:\softwore\python\lib\site-packages\sklearn\decomposition\pca.py in _fit_trunca
ted(self, X, n_components, svd_solver)
    433             raise ValueError("n_components=%r cannot be a string "
    434                              "with svd_solver='%s'"
--> 435                              % (n_components, svd_solver))
    436         elif not 1 <= n_components <= n_features:
    437             raise ValueError("n_components=%r must be between 1 and "

ValueError: n_components='mle' cannot be a string with svd_solver='arpack'

In [9]: pca = PCA(n_components='mle',svd_solver='randomized')
   ...: pca.fit(X)
   ...:
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-9-1f9c5b9ac3af> in <module>()
      1 pca = PCA(n_components='mle',svd_solver='randomized')
----> 2 pca.fit(X)

d:\softwore\python\lib\site-packages\sklearn\decomposition\pca.py in fit(self, X
, y)
    305             Returns the instance itself.
    306         """
--> 307         self._fit(X)
    308         return self
    309

d:\softwore\python\lib\site-packages\sklearn\decomposition\pca.py in _fit(self,
X)
    368             return self._fit_full(X, n_components)
    369         elif svd_solver in ['arpack', 'randomized']:
--> 370             return self._fit_truncated(X, n_components, svd_solver)
    371
    372     def _fit_full(self, X, n_components):

d:\softwore\python\lib\site-packages\sklearn\decomposition\pca.py in _fit_trunca
ted(self, X, n_components, svd_solver)
    433             raise ValueError("n_components=%r cannot be a string "
    434                              "with svd_solver='%s'"
--> 435                              % (n_components, svd_solver))
    436         elif not 1 <= n_components <= n_features:
    437             raise ValueError("n_components=%r must be between 1 and "

ValueError: n_components='mle' cannot be a string with svd_solver='randomized'

In [10]: pca = PCA(n_components='mle')
    ...: pca.fit(X)
    ...:
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-10-92060cf30409> in <module>()
      1 pca = PCA(n_components='mle')
----> 2 pca.fit(X)


d:\softwore\python\lib\site-packages\sklearn\decomposition\pca.py in _fit(self,
X)
    358             if max(X.shape) <= 500:
    359                 svd_solver = 'full'
--> 360             elif n_components >= 1 and n_components < .8 * min(X.shape):

    361                 svd_solver = 'randomized'
    362             # This is also the case of n_components in (0,1)

TypeError: unorderable types: str() >= int()














本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sklearn矩阵分解类库学习 的相关文章

随机推荐

  • 测试开发知识总结(一)

    本文内容顺序 测试基础理论 测试岗经常被问到的场景题 智力题 测试岗高频算法题 数据库 Linux知识点 常用自动化测试工具 1 Appium 官网 http appium io AppUI自动化测试 Appium 是一个移动端自动化测试开
  • TransUNet: Transformers Make Strong Encoders for Medical Image Segmentation

    TransUNet Transformers Make Strong Encoders for Medical Image Segmentation 发表时间 2021年2月 发表期刊 Arxiv Abstract 医学图像分割是发展医疗保
  • Spring- 上传文件 MultipartFile.transferTo() 报错 FileNotFoundException

    上传文件时 使用MultipartFile transferTo 将文件保存到本地路径 报错 java io IOException java io FileNotFoundException C Users XXXXX AppData L
  • vue单文件组件1(webpack打包)

    一 vue单文件组件开发流程 webpack打包 1 源文件目录结构 2 package json 3 webpack config js HTML Webpack Plugin依据html模板生成一个自动引用你打包后的文件 js或css
  • 【数据结构(C语言描述)】环形队列

    目录 一 基础知识 二 数组实现环队 2 1 初始化 2 2 判断环队是否为空 2 3 判断环队是否为满 2 4 入队 2 5 出队 2 6 取队头元素 2 7 取队尾元素 2 8 销毁环队 三 链表实现环队 3 1 初始化 3 2 判断环
  • STM32学习心得三十二:CAN通信基础知识、原理、配置及实验

    记录一下 方便以后翻阅 主要内容 1 CAN通信基础知识 2 STM32 CAN控制器简介 3 相关实验代码解读 参考资料 STM32中文参考手册 V10 第22章 控制器局域网 bxCAN 实验功能 CAN实验需要两个开发板 系统启动后
  • ctfshow-萌新-web1( 利用intval函数的特性获取敏感数据)

    ctf show 萌新模块的web1关 这一关考察的是intval 函数转换字符串时的特性以及SQL的拼接绕过 这一关直接就给了源码 并提示我们 id 1000 时 就是flag 先分析一下源码 首先是 intval 函数将参数id转换为数
  • PostgreSQL学习研究笔记(一)

    何为PostgreSQL PostgreSQL 是以加州大学伯克利分校计算机系开发的 postgres 版本 4 2 为基础的对象关系型数据库管理系统 PostgreSQL是最初的伯克利代码的开源继承者 任何人都可以以任何目的免费使用 修改
  • T-Kernel Error Code

    参考 tk errno h define E OK 0 Completed successfully define E SYS ERCD 5 0 System error define E NOCOP ERCD 6 0 Coprocesso
  • linux—通配符详解及总结

    本博客主要详解关于linux中常使用的通配符的知识点 主要分为三个步骤 通配符 和 的详细解释 举例截图说明 个人的总结理解 一 通配符 和 的详细解释 ps 因为通配符 中可添加很多变量 所以这里我会简单举出几个例子来说明 其他情况请类比
  • R 和 Rstudio 在线更新

    R 在线更新 最近安装 R 包的时候老是会遇到有些包不适应老版本 无奈还是更新了新的版本 卸载重装就太麻烦了 而且以前的包还需要重新加载 在线更新是最好的方法 可以直接在 Rstudio 中直接更新 直接运行以下命令就行 install p
  • Python还能这样学?独一档的学习路线与方法!两个月就能彻底掌握

    为什么要选择学习Python 我大学本专业当时学的是过时很久的工程物流管理 经常跟学长学姐们聊到他们的就业情况 然后自己也对未来的就业之路产生了很大的怀疑 后面经过一些了解 以及学长学姐的介绍 知道了Python 后面深入的了解了后 我果断
  • 基于Protege的知识建模实战

    一 Protege简介 用途和特点 1 Protege简介 Protege是斯坦福大学医学院生物信息研究中心基于Java开发的本体编辑和本体开发工具 也是基于知识的编辑器 属于开放源代码软件 这个软件主要用于语义网中本体的构建 是语义网中本
  • 华为OD机试真题B卷 Java 实现【停车场车辆统计】,附详细解题思路

    一 题目描述 特定大小的停车场 数组cars 表示 其中1表示有车 0表示没车 车辆大小不一 小车占一个车位 长度1 货车占两个车位 长度2 卡车占三个车位 长度3 统计停车场最少可以停多少辆车 返回具体的数目 二 输入描述 整型字符串数组
  • DHCP DNS 综合案例分析

    1 首先我们来配置一下192 168 1 2这台机器 1 1 操作系统 windows server 2003 R2 1 2 IP 192 168 1 2 24 GW 1922 168 1 1 DNS 192 168 1 2 注意 这台机器
  • 阿里云盘内测_【邀请码】阿里云盘内测码分享

    备受瞩目的阿里云网盘已在苹果App Store上架 并更名 阿里云盘 最新版本更名为v1 0 1 8 月下旬 阿里巴巴推出了一款名为 阿里云网盘 的独立 App 该应用开发者为阿里旗下的阿里云团队 定位是为 C 端用户提供可靠安全的存储备份
  • CUBEIDE 使用指南

    cubeIDE includes 下一直有一个错误的路径 如图 不知道什么原因引入了一个错误的路径怎么也消不掉 最后发现在工程文件里 用记事本等打开 cproject文件 删掉对应路径就好了 图是已经删掉的了 2 include 路径问题
  • QT信号与槽机制

    QT开发 QT信号与槽机制 一 QT消息模型 QT封装了具体操作系统的消息机制 遵循经典的GUI消息驱动事件模型 QT定义了与操作系统消息相关的自己的概念 即信号与槽 信号signal是由操作系统产生的消息 槽slot是程序中的消息处理函数
  • Openmv,stm32串口(定时器配置)

    新手学习记录中 得先有from pyb import UART的包以及import json 初始化uart UART 3 115200 表示是在串口3处 其波特率为115200 需要看openmv的原理图 看uart3的TX和RX是哪两个
  • sklearn矩阵分解类库学习

    sklearn decomposition模块提供矩阵分解算法 其他PCA NMF 或ICA 其中大部分算法都被视为降维技术 主成分分析 sklearn decomposition PCA n components None copy Tr