手机网站后台怎么进,线在成都网站推广公司,logo免费生成网站,网站开发多少钱农民主成分分析法 (Principal Component Analysis, PCA) 是一种数据压缩法#xff0c;可以从数据中提取重要的部分并排除不重要的部分#xff0c;是奇异值分解 (Singular Value Decomposition, SVD) 的重要应用。SVD 是线性代数的一个亮点。 是一个 的列阵#xff0c;矩阵秩 可以从数据中提取重要的部分并排除不重要的部分是奇异值分解 (Singular Value Decomposition, SVD) 的重要应用。SVD 是线性代数的一个亮点。 是一个 的列阵矩阵秩 SVD 会提供四个子空间的正交基按重要性排序。我们有两组奇异向量 在 里 在 里把 排列在 矩阵 把 排列在 矩阵 。SVD 不但找出正交基还把 对角化成 和 的大小一样 所以不一定是个方阵可能右边和下边有零。但是我们可以丢掉零空间和左零空间的基向量在 里 是个 的方阵 从大排到小。SVD 是 和 是正交矩阵有旋转作用。 是对角矩阵有伸展作用。SVD 把 的变换分解成旋转、伸展、旋转。 是 的特征向量叫左奇异向量。 是 的特征向量叫右奇异向量。 和 有共同的特征值 都是 的奇异值平方。用手的话可以用这个方法但如果是很大的矩阵要用计算机分解的话我们不想乘 和 太浪费计算力最好直接用 svd() 。现在我们要把数据带到实数空间所以只能有数字不能有分类数据。其实我觉得不应该叫“数据”因为“分类数据”根本就没有数字。表格中一行代表一条记录一列代表一个特征。表格里行比列多每一列都减掉平均值转换成矩阵 是又高又细的、中心化好的矩阵样本协方差矩阵是 的理由是求无偏估计。总方差是 的跡对角线的和等于 的特征值的和也等于 的奇异值平方的和 。重要的是右奇异向量 指向第 重要的方向解释总方差的 部分。我们选 个最重要的 是主成分我们只保留 的信息降低了维数。用 python 来实践一下吧用 iris 数据中心化做 svd() 奇异值除以 。 会把数据旋转到最好的方向如果我们要用二维图表来看的话 会变成 轴 会变成 轴丢掉 。我们用行向量所以旋转做 就可以了如果有一个行向量 就做 。import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from itertools import combinations# 准备数据
iris datasets.load_iris()# 四维数据分六个二维图表显示
fig, axes plt.subplots(2, 3)
axes axes.ravel()
for i, (x, y) in enumerate(combinations(range(4), 2)):axes[i].scatter(iris.data[:50, x], iris.data[:50, y],labeliris.target_names[0])axes[i].scatter(iris.data[50:100, x], iris.data[50:100, y],labeliris.target_names[1])axes[i].scatter(iris.data[100:, x], iris.data[100:, y],labeliris.target_names[2])axes[i].legend()axes[i].set_xlabel(iris.feature_names[x])axes[i].set_ylabel(iris.feature_names[y])
plt.show()# 做 SVD
A iris.data - iris.data.mean(axis0)
U, S, VT np.linalg.svd(A, full_matricesFalse)
S / np.sqrt(A.shape[1] - 1)
print(如果从四维降到二维会保留总方差的 {:.2%}。.format((S**2)[:2].sum() / (S**2).sum()))# 从四维降到二维后图表显示
A_t (A VT.T)[:, :2]
plt.scatter(A_t[:50, 0], A_t[:50, 1], labeliris.target_names[0])
plt.scatter(A_t[50:100, 0], A_t[50:100, 1], labeliris.target_names[1])
plt.scatter(A_t[100:, 0], A_t[100:, 1], labeliris.target_names[2])
plt.legend()
plt.xlabel(r$vec v_1$)
plt.ylabel(r$vec v_2$)
plt.show()四维数据需要用六个二维图表来看但这些都是截面仍然不能想象四维空间里的样子。从四维降到二维后保留 97.77% 的信息。PCA 的功能就是压缩数据同时保留最重要的信息。在数据分析的领域里我们可以用它来降维。高维不仅对我们的想象力造成劳损对建模也是一种诅咒在这里主成分分析法是一个很有用的降维技巧。