这篇文章很不错:https://blog.csdn.net/u013082989/article/details/53792010

为什么数据处理之前要进行归一化???(这个一直不明白)

这个也很不错:https://blog.csdn.net/u013082989/article/details/53792010#commentsedit

下面是复现一个例子:

# -*- coding: utf-8 -*-

#来源:https://blog.csdn.net/u013082989/article/details/53792010

#来源:https://blog.csdn.net/hustqb/article/details/78394058 (这里有个例子)关于降维之后的坐标系问题,???结合里面的例子

#用库函数实现的过程:

#导入需要的包:

import numpy as np

from matplotlib import pyplot as plt

from scipy import io as spio

from sklearn.decomposition import pca

from sklearn.preprocessing import StandardScaler

import matplotlib.pyplot as plt

#归一化数据,并作图

def scaler(X):

"""

注:这里的归一化是按照列进行的。也就是把每个特征都标准化,就是去除了单位的影响。

"""

scaler=StandardScaler()

scaler.fit(X)

x_train=scaler.transform(X)

return x_train

#使用pca模型拟合数据并降维n_components对应要降的维度

def jiangwei_pca(x_train,K): #传入的是X的矩阵和主成分的个数K

model=pca.PCA(n_components=K).fit(x_train)

Z=model.transform(x_train) #transform就会执行降维操作

#数据恢复,model.components_会得到降维使用的U矩阵

Ureduce=model.components_

x_rec=np.dot(Z,Ureduce) #数据恢复

return Z,x_rec #这里Z是将为之后的数据,x_rec是恢复之后的数据。

if __name__ == '__main__':

X=np.array([[1,1],[1,3],[2,3],[4,4],[2,4]])

x_train=scaler(X)

print('x_train:',x_train)

Z,x_rec=jiangwei_pca(x_train,2)

print("Z:",Z)

print("x_rec:",x_rec) #如果有时候,这里不能够重新恢复x_train,一个原因可能是主成分太少。

print("x_train:",x_train)

## 这里的主成分为什么不是原来的两个。

## 还有一个问题是,如何用图像表现出来。

## 还有一个问题就是如何得到系数,这个系数是每个特征在主成分中的贡献,要做这个就需要看矩阵,弄明白原理:

或许和这个程序有关:pca.explained_variance_ratio_

摘自:https://blog.csdn.net/qq_36523839/article/details/82558636

这里提一点:pca的方法explained_variance_ratio_计算了每个特征方差贡献率,所有总和为1,explained_variance_为方差值,通过合理使用这两个参数可以画出方差贡献率图或者方差值图,便于观察PCA降维最佳值。

在提醒一点:pca中的参数选项可以对数据做SVD与归一化处理很方便,但是需要先考虑是否需要这样做。

关于pca的一个推导例子:

、、

根据最后的图形显示来看,一共有五个样本点。而从下面的矩阵看,似乎不是这样???

有点纠结。

从对矩阵X的求均值过程可以知道,是对行求均值的。然后每行减掉均值。

(这样的话,也就是说:每一行是一个特征???,就不太明白了。)

应该写成这样比较清楚:(每一列是一个特性)

[

[1,1]

[1,3]

[2,3]

[4,4]

[2,4]

]

、、

从下面看出这里除的是5,也就是说5是m,也就是行数。???

、、

最后降维到一个特征::

下面图片中P的部分,是两个数,也就是两个特征的系数。代表着特征的系数。。。

关键是用的别人的库,但是怎么弄???

、、

上面

#、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

下面我们来分析另一个例子:这个例子是官方给出的:

程序如下:

# -*- coding: utf-8 -*-

"""

测试

这里是Python的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='mle') #这里是让机器决定主成分的个数,我们也可以自行设置。

pca = PCA(n_components=2) #这里设置主成分为,这里不能设置成3,因为这里的特征本身只有两个。

pca.fit(X)

print("这里是X:")

print(X)

Z=pca.transform(X) #transform就会执行降维操作

print('这里是Z:')

print(Z)

#Z = np.dot(X, self.components_.T)

# PCA(copy=True, n_components=2, whiten=False)

print(pca.explained_variance_ratio_)

然后运行程序输出的结果:

这里是X:

[[-1 -1]

[-2 -1]

[-3 -2]

[ 1 1]

[ 2 1]

[ 3 2]]

可能是系数的东西: 这里有可能是没个主成分中包含各个特征的权重系数。

你有没有感觉到这个矩阵有一定的特性,有点对角线对称的样子。

[[-0.83849224 0.54491354]

[-0.54491354 -0.83849224]]

这里是Z: 这里的Z实际上主成分的意思。主成分也就是综合特征

[[ 1.38340578 0.2935787 ]

[ 2.22189802 -0.25133484]

[ 3.6053038 0.04224385]

[-1.38340578 -0.2935787 ]

[-2.22189802 0.25133484]

[-3.6053038 -0.04224385]]

[0.99244289 0.00755711]

要捋清一个问题,我们想要得到的是什么?

我们想要得到的是每个主成分前面包含特征的系数。

主成分1=权重11*特征1+权重12*特征2+权重13*特征3···

主成分2=权重21*特征1+权重22*特征2+权重23*特征3···

[[-0.83849224 0.54491354]

[-0.54491354 -0.83849224]]

主成分1=(-0.83849224) *特征1+(-0.54491354)*特征2···

主成分2=(0.54491354) *特征1+(-0.83849224)*特征2···

就是上面这种系数,

我还是有一点疑问?为什么?这个系数矩阵是对称的,这样有点不是很科学??

python主成分分析_Python的主成分分析PCA算法相关推荐

  1. python中pca算法_使用python的numpy库实现PCA算法

    #!/usr/bin/env python # -*- coding: utf-8 -*- from numpy import * #参数1:特征值向量, #参数2:比率 #返回值:k(符合指定比率的 ...

  2. 莫烦python教程_python实现各种最优化算法

    python视频教程栏目介绍各种最优化算法 二分法 函数详见rres,此代码使该算法运行了两次def asdf(x): rres=8*x**3-2*x**2-7*x+3 return rres i=2 ...

  3. knn的python代码_Python代码实现KNN算法

    kNN算法是k-近邻算法的简称,主要用来进行分类实践,主要思路如下: 1.存在一个训练数据集,每个数据都有对应的标签,也就是说,我们知道样本集中每一数据和他对应的类别. 2.当输入一个新数据进行类别或 ...

  4. 二分查找算法python实现_Python实现-二分查找算法(3种方法)

    如果有这样一个列表,让你从这个列表中找到66的位置,你要怎么做? lst = [2, 3, 5, 10, 15, 16, 18, 22, 26, 30, 32, 35, 41, 42, 43, 55, ...

  5. 达内python人工智能_Python工程师?人工智能算法工程师?二者有什么区别?

    Python程序虽然火热,虽然有人说学会Python进军人工智能,但是Python不等于人工智能,Python工程师与人工智能算法工程师也有着本质的区别,来看看吧: Python工程师与人工智能算法工 ...

  6. 支持向量机python代码_Python机器学习SVM支持向量机算法理论 | kTWO-个人博客

    PS:这篇文章讲的是SVM的算法的基础理论知识,因为博主也是刚学习没多久,对SVM的数学思想了解的不是很深,所以这篇文章就简单介绍一下什么是SVM以及SVM是怎么工作的. 1.什么是支持向量机(SVM ...

  7. pca降维python实例_Python机器学习笔记:使用scikit-learn工具进行PCA降维

    之前总结过关于PCA的知识:深入学习主成分分析(PCA)算法原理.这里打算再写一篇笔记,总结一下如何使用scikit-learn工具来进行PCA降维. 在数据处理中,经常会遇到特征维度比样本数量多得多 ...

  8. 用通俗易懂的方式讲解:主成分分析(PCA)算法及案例(Python 代码)

    文章目录 知识汇总 加入方式 一.引入问题 二.数据降维 三.PCA基本数学原理 3.1 内积与投影 3.2 基 3.3 基变换的矩阵表示 3.4 协方差矩阵及优化目标 3.5 方差 3.6 协方差 ...

  9. 图解主成分分析PCA算法(附Python实现)

    0 写在前面 机器学习强基计划聚焦深度和广度,加深对机器学习模型的理解与应用."深"在详细推导算法模型背后的数学原理:"广"在分析多个机器学习模型:决策树.支持 ...

  10. 用Python的sklearn库进行PCA(主成分分析)

    在python的sklearn的库里面集成很多机器学习算法的库,其中也包括主成分分析的方法. 1.PCA算法的原理: PCA主要是用来数据降维,将高纬度的特征映射到低维度的特征,加快机器学习的速度.比 ...

最新文章

  1. LeetCode 三天打渔两天晒网 剩下一天睡大觉
  2. linux bootloader启动流程,技术|Linux 的启动流程详解
  3. mapgis矢量化怎么打分数_mapgis矢量化错了如何后退一步
  4. HTML背景图片的设置
  5. cdr添加节点快捷键_CorelDRAW常用热键|cdr快捷键大全
  6. java 企业付款到零钱 微信提现功能讲解
  7. 妇产科护理学复习重点
  8. 2020-11-10大众点评字体反爬抓取信息
  9. 故障恢复控制台主要命令
  10. linux dns主配置文件,RHEL 5下DNS的主配置文件详解
  11. Mac软件下载站推荐,让你告别软件荒!
  12. ART-PI调试记录----重力感应无线智能小车第二弹之OneNet+板载wifi控制电机转动
  13. 用户权限控制(Token登录)
  14. DBSCAN原理及matlab仿真代码
  15. <A Tale of Evil Twins: Adversarial Inputs versus Poisoned Models>阅读笔记
  16. 深度学习介绍-深度学习是什么
  17. 基于多智能体模型的街道步行空间量化研究
  18. 预测大盘最准确的指标_通达信预测大盘利器指标公式
  19. UltraISO 制作U盘镜像步骤
  20. 解决:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

热门文章

  1. 复合索引的底层数据结构——最左原则
  2. iphone6s读写速度测试软件,iPhone6S/7/8运行iOS13速度测试:结果有点失望
  3. 同城大数据| 有人坐享繁华,有人蜗居窘促,帝都学子们的差距有多大?
  4. “扣哒杯” AI世青赛公布2021-2022年度全国决赛个人获奖名单
  5. Python基础学习之正则表达式(完整版)
  6. android 创建前台服务,Android前台服务保活
  7. 音乐flac怎么转为mp3?
  8. 2019年长安杯 第一届电子数据取证竞赛 wp
  9. Router路由守卫
  10. ERP实用技巧:物料清单编制------(转)