PCA 降维的简单示例
1) 利用 PCA 算法将表 1 中的 2 维数据的降低至 1 维,输出降维后的数据。
表 1 数据
数据编号 1 2 3 4 5 6
特征 1 1 2 0 9 8 5
特征 2 2 4 3 2 4 3
2) 将降维后的数据恢复为 2 维数据,比较恢复的数据和表 1 中数据是否相同?并简述原因。
3) 计算降维后主成分的贡献率,贡献率表示投影后信息的保留程度,计算方法为降维后的 k 个特征值(这里 k=1)与特征值总和的比值。
4) 将降维前和降维后的数据分别可视化。
用 PCA 对经典数据集 Iris 进行降维
1) 利用 PCA 算法将 Iris 数据集中的 4 维特征中的降低至 2 维,输出降维后的数据。
2) 计算降维后主成分的贡献率。
3) 将降维前和降维后的数据分别可视化。PCA 是否利于数据的可视化?请简述原因。
望采纳
# 首先,我们需要导入必要的库
import numpy as np
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
# 然后,我们定义原始数据
data = [[1, 2], [2, 4], [0, 3], [9, 2], [8, 4], [5, 3]]
# 接着,我们使用 PCA 算法将数据降维至 1 维
pca = PCA(n_components=1)
pca.fit(data)
reduced_data = pca.transform(data)
# 最后,我们输出降维后的数据
print("降维后的数据是",reduced_data)
# 接下来,我们恢复降维后的数据
recovered_data = pca.inverse_transform(reduced_data)
# 最后,我们比较恢复的数据和原始数据是否相同
print("恢复数据和原始数据相比是一样的吗", np.allclose(data, recovered_data))
# 接下来,我们计算降维后主成分的贡献率
contribution_ratio = pca.explained_variance_ratio_
# 最后,我们输出贡献率
print("贡献率:", contribution_ratio)
# 接下来,我们可视化降维前和降维后的数据
plt.scatter(data[:, 0], data[:, 1], label="Original data")
plt.scatter(reduced_data[:, 0], np.zeros(len(reduced_data)), label="Reduced data")
plt.legend()
plt.show()
# 首先,我们需要导入必要的库
import numpy as np
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
# 然后,我们导入 Iris 数据集
from sklearn.datasets import load_iris
iris = load_iris()
# 接着,我们使用 PCA 算法将数据降维至 2 维
pca = PCA(n_components=2)
pca.fit(iris.data)
reduced_data = pca.transform(iris.data)
# 最后,我们输出降维后的数据
print(reduced_data)
# 接下来,我们计算降维后主成分的贡献率
contribution_ratio = pca.explained_variance_ratio_
# 最后,我们输出贡献率
print(contribution_ratio)
# 接下来,我们可视化降维前和降维后的数据
plt.scatter(iris.data[:, 0],
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!