python-Numpy.eig和PCA中的方差百分比
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-Numpy.eig和PCA中的方差百分比,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2436字,纯文字阅读大概需要4分钟。
内容图文
![python-Numpy.eig和PCA中的方差百分比](/upload/InfoBanner/zyjiaocheng/672/b597472e725c4e17adecc057313ba664.jpg)
Picking up from where we left…
因此,我可以使用linalg.eig或linalg.svd来计算PCA.当它们被喂入相同的数据时,每个返回不同的主成分/特征向量和特征值(我目前正在使用虹膜数据集).
看一下here或将PCA应用于Iris数据集的任何其他教程,我会发现特征值是[2.9108 0.9212 0.1474 0.0206]. eig方法为我提供了一套我不介意使用的不同特征值/向量集,不同之处在于这些特征值一经求和就等于维数(4),可用于查找每个分量对特征的贡献总方差.
取linalg.eig返回的特征值,我做不到.例如,返回的值为[9206.53059607 314.10307292 12.03601935 3.53031167].在这种情况下,差异的比例为[0.96542969 0.03293797 0.00126214 0.0003702]. This other page表示(“由组件解释的变化比例只是其特征值除以特征值之和.”)
由于每个维度所解释的方差应该是恒定的(我认为),所以这些比例是错误的.因此,如果我使用svd()返回的值,即所有教程中使用的值,则可以从各个维度获得正确的变化百分比,但是我想知道为什么无法使用eig返回的值像那样.
我假设返回的结果仍然是投影变量的有效方法,那么有没有一种方法可以对它们进行转换,以便获得每个变量解释的正确比例的方差?换句话说,我是否可以使用eig方法,并且仍然具有每个变量的方差比例?另外,是否可以仅在特征值中进行此映射,以便我可以同时拥有真实的特征值和归一化的特征值?
抱歉,长期写这篇文章.这是到目前为止的(::).假设您不只是读过这一行.
解决方法:
以Doug’s answer to your previous question并实现以下两个功能,我得到如下所示的输出:
def pca_eig(orig_data):
data = array(orig_data)
data = (data - data.mean(axis=0)) / data.std(axis=0)
C = corrcoef(data, rowvar=0)
w, v = linalg.eig(C)
print "Using numpy.linalg.eig"
print w
print v
def pca_svd(orig_data):
data = array(orig_data)
data = (data - data.mean(axis=0)) / data.std(axis=0)
C = corrcoef(data, rowvar=0)
u, s, v = linalg.svd(C)
print "Using numpy.linalg.svd"
print u
print s
print v
输出:
Using numpy.linalg.eig
[ 2.91081808 0.92122093 0.14735328 0.02060771]
[[ 0.52237162 -0.37231836 -0.72101681 0.26199559]
[-0.26335492 -0.92555649 0.24203288 -0.12413481]
[ 0.58125401 -0.02109478 0.14089226 -0.80115427]
[ 0.56561105 -0.06541577 0.6338014 0.52354627]]
Using numpy.linalg.svd
[[-0.52237162 -0.37231836 0.72101681 0.26199559]
[ 0.26335492 -0.92555649 -0.24203288 -0.12413481]
[-0.58125401 -0.02109478 -0.14089226 -0.80115427]
[-0.56561105 -0.06541577 -0.6338014 0.52354627]]
[ 2.91081808 0.92122093 0.14735328 0.02060771]
[[-0.52237162 0.26335492 -0.58125401 -0.56561105]
[-0.37231836 -0.92555649 -0.02109478 -0.06541577]
[ 0.72101681 -0.24203288 -0.14089226 -0.6338014 ]
[ 0.26199559 -0.12413481 -0.80115427 0.52354627]]
在两种情况下,我都获得了所需的特征值.
内容总结
以上是互联网集市为您收集整理的python-Numpy.eig和PCA中的方差百分比全部内容,希望文章能够帮你解决python-Numpy.eig和PCA中的方差百分比所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。