Heim  >  Artikel  >  Backend-Entwicklung  >  Wie schreibe ich einen PCA-Hauptkomponentenanalysealgorithmus in Python?

Wie schreibe ich einen PCA-Hauptkomponentenanalysealgorithmus in Python?

WBOY
WBOYOriginal
2023-09-20 10:34:46836Durchsuche

Wie schreibe ich einen PCA-Hauptkomponentenanalysealgorithmus in Python?

Wie schreibe ich einen PCA-Hauptkomponentenanalysealgorithmus in Python?

PCA (Hauptkomponentenanalyse) ist ein häufig verwendeter unbeaufsichtigter Lernalgorithmus, der dazu dient, die Dimensionalität von Daten zu reduzieren, um Daten besser zu verstehen und zu analysieren. In diesem Artikel lernen wir, wie man den PCA-Hauptkomponentenanalysealgorithmus mit Python schreibt und stellen spezifische Codebeispiele bereit.

Die Schritte der PCA sind wie folgt:

  1. Standardisieren Sie die Daten: Setzen Sie den Mittelwert jedes Merkmals der Daten auf Null und passen Sie die Varianz an denselben Bereich an, um sicherzustellen, dass jedes Merkmal den gleichen Einfluss auf die Ergebnisse hat.
  2. Kovarianzmatrix berechnen: Die Kovarianzmatrix misst die Korrelation zwischen Merkmalen. Berechnen Sie die Kovarianzmatrix anhand der normalisierten Daten.
  3. Eigenwerte und Eigenvektoren berechnen: Durch Durchführung der Eigenwertzerlegung der Kovarianzmatrix können Eigenwerte und entsprechende Eigenvektoren erhalten werden.
  4. Wählen Sie die Hauptkomponente aus: Wählen Sie die Hauptkomponente entsprechend der Größe des Eigenwerts aus. Die Hauptkomponente ist der Eigenvektor der Kovarianzmatrix.
  5. Daten transformieren: Transformieren Sie die Daten mithilfe ausgewählter Hauptkomponenten in einen neuen niedrigdimensionalen Raum.

Codebeispiel:

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)

Im obigen Code normalisieren wir zunächst die Daten durch np.mean und np.std. Verwenden Sie dann np.cov, um die Kovarianzmatrix zu berechnen. Als nächstes führen Sie mit np.linalg.eig eine Eigenwertzerlegung der Kovarianzmatrix durch, um Eigenwerte und Eigenvektoren zu erhalten. Wir sortieren nach der Größe der Eigenwerte und wählen die Eigenvektoren aus, die den ersten k Eigenwerten entsprechen. Abschließend multiplizieren wir die normalisierten Daten mit dem ausgewählten Merkmalsvektor, um die transformierten Daten zu erhalten. np.meannp.std将数据标准化。然后,使用np.cov计算协方差矩阵。接下来,使用np.linalg.eig对协方差矩阵进行特征值分解,得到特征值和特征向量。我们根据特征值的大小进行排序,选择前k个特征值对应的特征向量。最后,我们将标准化后的数据与选择的特征向量相乘,得到转换后的数据。

在示例数据中,我们使用一个简单的2维数据作为示例。最后,我们将维度降低到1维,打印输出转换后的数据。

运行上述代码,输出结果如下:

[[-1.41421356]
 [-0.70710678]
 [ 0.70710678]
 [ 1.41421356]]

这个结果显示数据已经被成功地转换到了1维空间。

通过这个示例,你可以学习到如何使用Python编写PCA主成分分析算法,并使用np.meannp.stdnp.covnp.linalg.eig

In den Beispieldaten verwenden wir einfache zweidimensionale Daten als Beispiel. Abschließend reduzieren wir die Dimensionalität auf eine Dimension und drucken die konvertierten Daten aus. 🎜🎜Führen Sie den obigen Code aus. Das Ausgabeergebnis lautet wie folgt: 🎜rrreee🎜Dieses Ergebnis zeigt, dass die Daten erfolgreich in den eindimensionalen Raum konvertiert wurden. 🎜🎜Anhand dieses Beispiels können Sie lernen, wie Sie mit Python den PCA-Hauptkomponentenanalysealgorithmus schreiben und np.mean, np.std, np verwenden .cov und np.linalg.eig sowie andere NumPy-Funktionen werden zur Durchführung von Berechnungen verwendet. Ich hoffe, dieser Artikel kann Ihnen helfen, die Prinzipien und die Implementierung des PCA-Algorithmus besser zu verstehen und ihn bei Ihren Datenanalyse- und maschinellen Lernaufgaben anzuwenden. 🎜

Das obige ist der detaillierte Inhalt vonWie schreibe ich einen PCA-Hauptkomponentenanalysealgorithmus in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn