Python 官方文档:入门教程 => 点击学习
1前言 本文主要讲解主成分分析析法(PCA)的python实现,后续会跟进实例分析 2 原理-代码实现 2.1 实现步骤 主成分分析PCA是一种应用广泛的和降维方法,对其实现做以下归纳 2.2 代码实
本文主要讲解主成分分析析法(PCA)的python实现,后续会跟进实例分析
主成分分析PCA是一种应用广泛的和降维方法,对其实现做以下归纳
导入包
import numpy as np
# 计算协方差矩阵def calc_cov(X): m = X.shape[0] # 样本的数量,行数 # 数据标准化 X = (X - np.mean(X, axis=0)) / np.var(X, axis=0) # 标准化之后均值为0,方差为1 return 1 / m * np.matmul(X.T, X) # matmul为两个矩阵的乘积
def pca(X, n_components): # 计算协方差矩阵 cov_matrix = calc_cov(X) # 计算协方差矩阵的特征值和对应特征向量 eigenvalues, eigenvectors = np.linalg.eig(cov_matrix) # eigenvalues特征值,eigenvectors特征向量 # 对特征值排序 idx = eigenvalues.argsort()[::-1] # 取最大的前n_component组 eigenvectors = eigenvectors[:, idx] eigenvectors = eigenvectors[:, :n_components] # Y=XP转换 return np.matmul(X, eigenvectors)
导入数据
from sklearn import datasetsimport matplotlib.pyplot as plt# 导入鸢尾花数据集iris = datasets.load_iris()X = iris.datay = iris.target
查看数据的形状,其结果为(150, 4)
X.shape# (150, 4)
计算协方差矩阵
cov_matrix = calc_cov(X) # 计算特征值cov_matrix
可以看到协方差矩阵为4*4的矩阵,然后我们计算该矩阵的特征值和特征向量
eigenvalues, eigenvectors = np.linalg.eig(cov_matrix) # eigenvalues特征值,eigenvectors特征向量
然后计算我们需要的P,这里我们保留3个主成分
idx = eigenvalues.argsort()[::-1]# 取最大的前n_component组eigenvectors = eigenvectors[:, idx]eigenvectors = eigenvectors[:, :3]
得到了一个4行3列的矩阵
然后利用P求得降维后的数据
# Y=PX转换np.matmul(X, eigenvectors)
降维后的数据为(150, 4)*(4, 3)=(150, 3)
也就是150条,3列的数据,数据由原来的4维降低到了3维
# 导入sklearn降维模块from sklearn import decomposition# 创建pca模型实例,主成分个数为3个pca = decomposition.PCA(n_components=3) # 写我们需要几个主成分# 模型拟合pca.fit(X)# 拟合模型并将模型应用于数据XX_trans = pca.transfORM(X)# 颜色列表colors = ['navy', 'turquoise', 'darkorange']# 绘制不同类别for c, i, target_name in zip(colors, [0,1,2], iris.target_names): plt.scatter(X_trans[y == i, 0], X_trans[y == i, 1], color=c, lw=2, label=target_name)# 添加图例plt.legend()plt.show()
来源地址:https://blog.csdn.net/qq_44319167/article/details/128839122
--结束END--
本文标题: 【数学建模】常用算法-主成分分析PCA的Python实现
本文链接: https://www.lsjlt.com/news/424404.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0