PCA算法原理及实现(Python)
import numpy as np
from sklearn.decomposition import PCA
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
# 生成3D数据集
def make_data(w, b, N):
rand_mat = np.random.randn(N, 3) # 随机数矩阵
data = np.dot(rand_mat, w) + b # 数据生成
return data
# 可视化数据集
def visualize_data(data):
fig = plt.figure()
ax = Axes3D(fig)
ax.scatter(data[:, 0], data[:, 1], data[:, 2])
plt.show()
# 主函数
if __name__ == "__main__":
N = 100 # 数据点的数量
w = np.array([[1.5, -2.0, 1.0], [0.5, 1.0, 2.0], [-1.0, 2.0, 3.0]]) # 权重矩阵
b = np.array([1.0, -1.0, 3.0]) # 偏置向量
data = make_data(w, b, N) # 生成数据
# 可视化原始数据
visualize_data(data)
# 使用PCA进行降维
pca = PCA(n_components=2) # 指定要降到的维数
pca.fit(data)
data_reduced = pca.transform(data) # 降维后的数据
# 可视化降维后的数据
visualize_data(data_reduced)
这段代码首先定义了一个生成3D数据集的函数,随后定义了一个可视化数据集的函数。主函数中,我们生成了一个3D数据集,并对其进行了可视化。然后,我们使用PCA算法对数据进行降维,并再次可视化了降维后的数据集。这个过程展示了PCA算法的基本应用,并且使用了matplotlib
库来进行可视化。
评论已关闭