Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk menulis algoritma analisis komponen utama PCA dalam Python?
Bagaimana untuk menulis algoritma analisis komponen utama PCA dalam Python?
PCA (Analisis Komponen Utama) ialah algoritma pembelajaran tanpa pengawasan yang biasa digunakan untuk mengurangkan dimensi data untuk lebih memahami dan menganalisis data. Dalam artikel ini, kita akan belajar cara menulis algoritma analisis komponen utama PCA menggunakan Python dan memberikan contoh kod khusus.
Langkah-langkah PCA adalah seperti berikut:
Contoh kod:
import numpy as np def pca(X, k): # 1. 标准化数据 X_normalized = (X - np.mean(X, axis=0)) / np.std(X, axis=0) # 2. 计算协方差矩阵 covariance_matrix = np.cov(X_normalized.T) # 3. 计算特征值和特征向量 eigenvalues, eigenvectors = np.linalg.eig(covariance_matrix) # 4. 选择主成分 eig_indices = np.argsort(eigenvalues)[::-1] # 根据特征值的大小对特征向量进行排序 top_k_eig_indices = eig_indices[:k] # 选择前k个特征值对应的特征向量 top_k_eigenvectors = eigenvectors[:, top_k_eig_indices] # 5. 转换数据 transformed_data = np.dot(X_normalized, top_k_eigenvectors) return transformed_data # 示例数据 X = np.array([[1, 2], [3, 4], [5, 6], [7, 8]]) # 使用PCA降低维度到1 k = 1 transformed_data = pca(X, k) print(transformed_data)
Dalam kod di atas, kami mula-mula menormalkan data melalui np.mean
dan np.std
. Kemudian, gunakan np.cov
untuk mengira matriks kovarians. Seterusnya, gunakan np.linalg.eig
untuk melakukan penguraian nilai eigen pada matriks kovarians untuk mendapatkan nilai eigen dan vektor eigen. Kami menyusun mengikut saiz nilai eigen dan memilih vektor eigen yang sepadan dengan nilai k eigen pertama. Akhir sekali, kami mendarabkan data ternormal dengan vektor ciri yang dipilih untuk mendapatkan data yang diubah. np.mean
和np.std
将数据标准化。然后,使用np.cov
计算协方差矩阵。接下来,使用np.linalg.eig
对协方差矩阵进行特征值分解,得到特征值和特征向量。我们根据特征值的大小进行排序,选择前k个特征值对应的特征向量。最后,我们将标准化后的数据与选择的特征向量相乘,得到转换后的数据。
在示例数据中,我们使用一个简单的2维数据作为示例。最后,我们将维度降低到1维,打印输出转换后的数据。
运行上述代码,输出结果如下:
[[-1.41421356] [-0.70710678] [ 0.70710678] [ 1.41421356]]
这个结果显示数据已经被成功地转换到了1维空间。
通过这个示例,你可以学习到如何使用Python编写PCA主成分分析算法,并使用np.mean
、np.std
、np.cov
和np.linalg.eig
np.mean
, np.std
, np .cov
dan np.linalg.eig
dan fungsi NumPy lain digunakan untuk melakukan pengiraan. Saya harap artikel ini dapat membantu anda memahami dengan lebih baik prinsip dan pelaksanaan algoritma PCA, serta dapat menerapkannya dalam analisis data dan tugasan pembelajaran mesin anda. 🎜Atas ialah kandungan terperinci Bagaimana untuk menulis algoritma analisis komponen utama PCA dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!