- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章(手写)PCA原理及其Python实现图文详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
。
为什么需要降维呢?
因为数据个数 N 和每个数据的维度 p 不满足 N >> p,造成了模型结果的“过拟合”。有两种方法解决上述问题:
增加N;减小p.
这里我们讲解的 PCA 属于方法2.
。
。
。
。
。
""" -*- coding: utf-8 -*- @ Time : 2021/8/15 22:19 @ Author : Raymond @ Email : wanght2316@163.com @ Editor : Pycharm"""from sklearn.datasets import load_digitsfrom sklearn.decomposition import PCAimport pandas as pdimport matplotlib.pyplot as pltdigits = load_digits()print(digits.keys())print("数据的形状为: {}".format(digits["data"].shape))# 构建模型 - 降到10 dpca = PCA(n_components=10)pca.fit(digits.data)projected=pca.fit_transform(digits.data)print("降维后主成分的方差值为:",pca.explained_variance_)print("降维后主成分的方差值占总方差的比例为:",pca.explained_variance_ratio_)print("降维后最大方差的成分为:",pca.components_)print("降维后主成分的个数为:",pca.n_components_)print("original shape:",digits.data.shape)print("transformed shape:",projected.shape)s = pca.explained_variance_c_s = pd.DataFrame({"b": s,"b_sum": s.cumsum() / s.sum()})c_s["b_sum"].plot(style= "--ko",figsize= (10, 4))plt.rcParams["font.sans-serif"] = ["SimHei"] # 指定默认字体plt.rcParams["axes.unicode_minus"] = False # 解决保存图像是负号"-"显示为方块的问题plt.axhline(0.85, color= "r",linestyle= "--")plt.text(6, c_s["b_sum"].iloc[6]-0.08, "第7个成分累计贡献率超过85%", color="b")plt.title("PCA 各成分累计占比")plt.grid()plt.savefig("./PCA.jpg")plt.show()
结果展示:
。
本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注我的更多内容! 。
原文链接:https://blog.csdn.net/Ray_mond_/article/details/119722214 。
最后此篇关于(手写)PCA原理及其Python实现图文详解的文章就讲到这里了,如果你想了解更多关于(手写)PCA原理及其Python实现图文详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
目录 1、背景 2、样本均值和样本方差矩阵 3、PCA 3.1 最大投影方差 3.2 最小重构距离 4、Py
android中获取屏幕的长于宽,参考了网上有很多代码,但结果与实际不符,如我的手机是i9000,屏幕大小是480*800px,得到的结果却为320*533 结果很不靠谱,于是自己写了几行代码,亲测
我写了一个 vector 类来学习 move 语义。 我使用 move 构造函数来 move T(注释行)。 我的问题是为什么不像在 C 中一样复制临时对象的所有字节并将临时对象的所有字节设置为零?
我需要解析一种类似于 Java 的最小化版本的语言。由于效率是最重要的因素,所以我选择手写解析器而不是像 GOLD、bison 和 yacc 这样的 LRAR 解析器生成器。 但是我找不到优秀的手写解
我正在尝试向 perlin 单纯形噪声函数添加 asm.js 注释: "use strict"; // Ported from Stefan Gustavson's java implementati
之前在bind和apply以及call函数使用中详解总结过bind和apply以及call函数的使用,下面手写一下三个函数。 一、首先call函数 Function.prototype.MyCall
我正在 asm.js 中编写优先级队列和八叉树Javascript 的子集,以便从它们中挤出最后可能的性能。 但是,您如何在 asm.js 函数的 heap 中存储对 Javascript 对象的引用
我是一名优秀的程序员,十分优秀!