数学建模社区-数学中国
标题:
python 解决主成分分析 pca
[打印本页]
作者:
2744557306
时间:
2024-3-21 11:03
标题:
python 解决主成分分析 pca
主成分分析(Principal Component Analysis,PCA)是一种常用的降维技术和数据预处理方法,它通过线性变换将高维数据映射到低维空间中,以找到数据中的主要特征。
6 y- {" Z* {( B
主成分分析的基本思想是将原始数据投影到一个新的坐标系中,使得投影后的数据具有最大的方差。这些新的坐标轴被称为主成分,而每个主成分都是原始特征的线性组合。主成分按照其所解释的方差贡献程度进行排序,最重要的主成分排在前面。
! L- w' S7 {4 }. w9 `
主成分分析的步骤如下:
! ?& _, P( u c6 f
% L5 j7 Z9 ]( O- `8 k: V
1.标准化数据:将原始数据进行标准化处理,使得每个特征的均值为0,方差为1。这样可以避免某些特征由于量级差异造成的影响。
4 W/ e' R* W. O3 [, t
2.计算协方差矩阵:根据标准化后的数据计算协方差矩阵。协方差矩阵描述了不同特征之间的相关性。
9 ~4 X$ l5 ^5 H7 X- u( t7 g
3.计算特征值和特征向量:对协方差矩阵进行特征值分解,得到特征值和对应的特征向量。特征值表示每个主成分所解释的方差,特征向量表示各个主成分的方向。
% O7 u" E2 ~ U, X! c0 E: \% Z6 `& o
4.选择主成分:根据特征值的大小选择要保留的主成分的数量。通常选择保留累计贡献率较高的主成分。
9 M0 w5 }+ m9 s g$ r0 {
5.数据转换:将原始数据投影到选定的主成分上,得到降维后的数据。
7 \, Y' `7 T4 u1 z$ L/ z% l
) X" t4 Z! B% L5 n9 r# |
主成分分析的主要应用包括降维、可视化、特征提取和去除数据中的噪音。通过降低数据的维度,主成分分析可以简化数据集并去除冗余信息,从而提高后续分析的效率和准确性。
. @( X! l/ z7 U2 i" J2 y8 N5 |
! C* a7 U. A5 E* `# a! W# Y* ]
逐行解释代码的含义:
6 o' M* |& U& s4 z0 B' q4 v2 x
import numpy as np
( C' g0 o2 m$ W- ~/ M. a8 s
import pandas as pd
' { A3 l/ ^$ X6 h
from sklearn.decomposition import PCA
6 b7 r0 X/ g5 o% _4 @4 e
" r* F- k# g$ h
这些是导入所需的库。numpy用于数值计算,pandas用于数据处理,sklearn.decomposition中的PCA用于主成分分析。
+ W* G3 l( A" p( m* x2 P4 }" v
df = pd.DataFrame({
, z6 @: Z' u7 T/ E, ^
'x1': [149.5, 162.5, 162.7, 162.2, 156.5],
% U/ u( D7 \9 ^' w1 _3 w
'x2': [69.5, 77, 78.5, 87.5, 74.5],
. ^ e/ ?8 y2 M0 \
'x3': [38.5, 55.5, 50.8, 65.5, 49]
# ]- c; E+ S h3 @( \4 T
})
0 Y5 R1 M8 c' X* v8 F+ u. b
# p3 I" t' ~/ O; W* K
这里创建了一个数据帧df,包含了3个变量 x1、x2、x3 的观测值。数据集中每一列代表一个变量,每一行代表一个观测值。
2 G/ P' P5 C/ a7 `6 F4 G! B9 d3 \
model = PCA().fit(np.array(df))
9 w) a/ G+ B( t1 ?6 ^& Y8 J! T
! ~. X8 l: @6 s. Q- R% {, T
这行代码创建了一个PCA对象,并使用fit方法拟合数据。fit方法将数据df作为输入,并根据数据计算主成分分析模型。
2 ^& p: F% Q$ b: P% E& k
print('特征值:', model.explained_variance_)
$ T: I% c4 m8 Y3 E' \8 p
print('贡献率:', model.explained_variance_ratio_)
7 W8 H: X8 }% m, ]: X( f
print('各主成分的系数:', model.components_)
* |' q/ x) l3 T9 z- K
$ M0 w; a' Y4 j5 o: k2 L+ F) [1 y# I
这几行代码分别打印了主成分分析模型的三个重要属性:
2 r' h$ n' L( ~7 s. f
1 [, K6 S' s0 [
1.explained_variance_:特征值,表示每个主成分的方差。
0 r+ S- s+ j1 ]9 U) Y
2.explained_variance_ratio_:贡献率,表示每个主成分的方差占总方差的比例。
p i' J& f1 T
3.components_:各主成分的系数,表示每个主成分在原始变量空间中的权重。
6 h1 |1 d1 H' \) | G5 x8 r
# R; D) R, Q# ?4 v# Q5 |1 {
pca_df = pd.DataFrame(model.transform(np.array(df)))
3 y0 }* d; u8 S/ P3 A
pca_df.columns = ['F1', 'F2', 'F3']
) S1 N& V% i: q+ \
pca_df
& \' Z3 ]8 [3 i$ t2 F( L
+ c! T+ a" i$ U! ]* J4 X8 ]2 q3 t
这几行代码使用model.transform方法将原始数据进行主成分转换,并将结果存储到一个新的数据帧pca_df中。pca_df包含三个列,分别命名为'F1'、'F2'、'F3',分别表示三个主成分的值。
4 h! P& \. Q# ]7 f
希望这个逐行解释对你有帮助!如果你还有其他问题,请随时提问。
4 ]7 Y a% C( l9 e4 V8 u6 ]7 A9 W
. @: [; i3 q$ K. v. x8 W
& y/ I& [8 w5 Z+ Y) l
29.pca.py
2024-3-21 11:03 上传
点击文件名下载附件
下载积分: 体力 -2 点
671 Bytes, 下载次数: 0, 下载积分: 体力 -2 点
售价:
2 点体力
[
记录
] [
购买
]
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5