Skip to main content

Étape 1

Le premier jeu de données de nettoyage est très important. Parce que ce n'est pas l'objectif de cet article, vous pouvez aller en stock pour voir ce que j'ai fait: https: //github.com/glosophy/windpowerforecasting/blob/main/windowpowerpca.ipya

] Étape 2
Les données sont divisées en variables (y) et caractéristiques ou arguments (x).
La troisième étape
import pandas as pdfeatures = ['WindSpeed', 'RotorRPM', 'ReactivePower', 'GeneratorWinding1Temperature', 'GeneratorWinding2Temperature', 'GeneratorRPM', 'GearboxBearingTemperature', 'GearboxOilTemperature']# 将数据分离为Y和Xy = data['ActivePower']X = data[features] Matrix variable X, pour chaque colonne, à l'exception des colonnes de chaque valeur de fonctionnalité moyenne. (Cela garantit que la moyenne de chaque colonne est nulle.) Peut également être normalisée en divisant par colonnes. Le but de cette étape consiste à normaliser les caractéristiques, à créer une écart moyen de la moyenne et de norme de zéro par 1.



C'est l'examen sexy sexy. Assurons-nous que la déviation moyenne et type est respectivement 0 et 1.
# 减去均值X = X - X.mean()# 标准化Z = X / X.std()



Tenez la matrice Z, transférez-la à nouveau, puis multipliez la matrice derrière Z, c'est la matrice syllabeFALSE DE Z.
# 检验均值= 0和标准差= 1print('MEAN:')print(Z.mean())print('---'*15)print('STD:')print(Z.std())


Valeur de valeur en vedette et une fonctionnalité matricielle calculée, colonne de la fonction Matrix correspondant à la valeur de fonctionnalité. Caractéristiques standardisées de vecteur.

Dans cette étape, il est important de veiller à ce que sa fonction de fonctionnalité et sa fonctionnalité vectorielle soient triées en ordre décroissant (de grand à petit). Organisez votre Eigenvalue et organisez-le selon là.


import numpy as npZ = np.dot(Z.T, Z)

Partie 7

L'attribution de la matrice de la fonction vectorielle à P, l'attribution de D et la valeur de fonctionnalité réside sur la diagonale, la valeur d'autres emplacements égaux zéro. La valeur de la fonctionnalité sur Diagonal D sera liée aux colonnes correspondantes de P.
Étape 8

Calculatrice Z * = ZP. Cette nouvelle matrice, Z *, est la version centrale ou standard de X, mais maintenant chaque valeur d'observation est une combinaison de variables brutes, dans lesquelles le poids est déterminé par la fonction vectorielle.


Une chose importante à propos de cette nouvelle matrice Z * est due aux vecteurs présentant à Pô toxic lLes autres, les colonnes de Z * sont également indépendantes les unes des autres! eigenvalues, eigenvectors = np.linalg.eig(Z)


Partie 9

avec Z * Vous pouvez décider de la quantité de fonctionnalités et supprimez le nombre de fonctionnalités. Ceci est généralement fait par un diagramme scree.


D = np.diag(eigenvalues)P = eigenvectors

SCREE Schéma affiche la quantité de variations extraites de données provenant de données. Y Axe Y montre le nombre de modifications (pour plus d'informations sur SCHee, comment les expliquer, voir cet article: https://boiring.medium.com/how-to-read-pca-bipplots-and-screePlot 136246AAE063 #: ~ : Texte =% 20Scree% 20plot% 20Shows% 20Low,% 20ParinIpal% 20Components% 20 à% 20 à contenir. & amp; Texte = %% 20% 20% 20% 20 %%%%%%% 20 LI DOI.).

Le graphique de gauche montre que la quantité de modifications provenant de chaque composant principal et le montant variable cumulatif est créé en ajoutant ou en examinant un autre composant principal.
Choisissez le nombre de composants choisis et c'est une règle expérimentale: le composant principal est sélectionné pourra décrire au moins 80-85% de variance. Dans cet exemple, seul le premier composant principal explique environ 82% de la variance. Plus le deuxième composant principal, ce nombre est de près de 90%.

Si vous voulez savoir comment expliquer dans le contexte des données, je trouve cet article particulièrement facile à comprendre: https://blogs.sas.com/content/iml/ 2019/11/04 / traduction-graphique-directeur-composant.html. Ils utilisent l'iris de jeu de données et utilisent SCHee, profil et échantillons. De nombreux exemples.


Conclusion Z_new = np.dot(Z, P)

PCA est parfois difficile. Mais tant qu'il y a une ressource et une patience appropriées, cela peut devenir agréable. Plus important encore, j'ai constaté que c'était très utile pour les principes de base du Master Master PCA complets.

J'espère que vous pensez que cet article est utile! Vous pouvez voir le script Python complet ici: https://github.com/glosophy/windowpowerecast/blob/main/windowpowerPCA.IPYN

Sujets

Catégories