python - 使用 Numpy 获得第一个主成分并减少 PCA 的方差
问题描述
我在这里关注这个例子:https ://machinelearningmastery.com/calculate-principal-component-analysis-scratch-python/
A = array([[1, 2], [3, 4], [5, 6]])
print(A)
# calculate the mean of each column
M = mean(A.T, axis=1)
print(M)
# center columns by subtracting column means
C = A - M
print(C)
# calculate covariance matrix of centered matrix
V = cov(C.T)
print(V)
# eigendecomposition of covariance matrix
values, vectors = eig(V)
print(vectors)
print(values)
# project data
P = vectors.T.dot(C.T)
print(P.T)
这使:
original data
[[1 2]
[3 4]
[5 6]]
column mean
[ 3. 4.]
centered matrix
[[-2. -2.]
[ 0. 0.]
[ 2. 2.]]
covariance matrix
[[ 4. 4.]
[ 4. 4.]]
vectors
[[ 0.70710678 -0.70710678]
[ 0.70710678 0.70710678]]
values
[ 8. 0.]
projected data
[[-2.82842712 0. ]
[ 0. 0. ]
[ 2.82842712 0. ]]
如果我想找到第一个主方向,我是否只需取最大特征向量对应的特征值?因此:[0.70710678, 0.70710678]
?
在此基础上,第一个主成分是投影到数据上的最高特征向量吗?就像是:
vectors[:,:1].T.dot(C.T)
这使:
array([[-2.82842712, 0. , 2.82842712]])
我只是担心我的术语混淆了,或者我过于简单化了。提前致谢!
解决方案
推荐阅读
- vhdl - 使用 Quartus Prime 和 Modelsim 对 CPLD 进行 VHDL 时序仿真
- migration - 迁移到 Liferay 7.2 的弃用变量
- aws-lambda - 部署 lambda 时 CDK 排除文件
- python - 如何在mac上为windows创建可执行文件?
- java - 从 Firestore 获取 ArrayList 并从该列表中选择 3 个随机字符串
- python - Python-避免在日志文件中自动记录 udaexec
- c# - 包含对象列表的对象的 ASP.NET Core 3.0 MVC CRUD
- r - 带有图案填充的ggplot2 geom_point
- generics - 如何在 UML 中表示模板函数的类型约束
- database - 生成 UID 的方法