Dernière Mise à jour le 17 août 2020
La réduction de dimensionnalité est une technique d’apprentissage non supervisée.
Néanmoins, il peut être utilisé comme étape de prétraitement de transformation de données pour des algorithmes d’apprentissage automatique sur des ensembles de données de modélisation prédictive de classification et de régression avec des algorithmes d’apprentissage supervisé.
Il existe de nombreux algorithmes de réduction de dimensionnalité parmi lesquels choisir et aucun meilleur algorithme pour tous les cas. Au lieu de cela, c’est une bonne idée d’explorer une gamme d’algorithmes de réduction de dimensionnalité et de configurations différentes pour chaque algorithme.
Dans ce tutoriel, vous découvrirez comment ajuster et évaluer les algorithmes de réduction de la dimensionnalité supérieure en Python.
Après avoir terminé ce tutoriel, vous saurez:
- La réduction de dimensionnalité cherche une représentation de dimension inférieure des données d’entrée numériques qui préserve les relations saillantes dans les données.
- Il existe de nombreux algorithmes de réduction de dimensionnalité différents et aucune méthode unique pour tous les ensembles de données.
- Comment implémenter, adapter et évaluer la réduction de la dimensionnalité supérieure en Python avec la bibliothèque d’apprentissage automatique scikit-learn.
Lancez votre projet avec la préparation des données de mon nouveau livre pour l’apprentissage automatique, y compris des tutoriels étape par étape et les fichiers de code source Python pour tous les exemples.
Commençons.
Algorithmes de Réduction De Dimensionnalité Avec Python
Photo de Bernard Spragg. NZ, certains droits sont réservés.
- Présentation du tutoriel
- Réduction de la dimensionnalité
- Vous Voulez Commencer La Préparation Des Données?
- Algorithmes de réduction de la dimensionnalité
- Méthodes d’algèbre linéaire
- Méthodes d’apprentissage multiples
- Exemples de réduction de dimensionnalité
- Installation de la bibliothèque Scikit-Learn
- Ensemble de données de classification
- Analyse en composantes principales
- Singular Value Decomposition
- Linear Discriminant Analysis
- Isomap Embedding
- Locally Linear Embedding
- Modified Locally Linear Embedding
- Further Reading
- Tutoriels
- API
- Résumé
- Maîtrisez la Préparation des données modernes !
- Préparez vos Données d’Apprentissage Automatique en quelques Minutes
- Apportez Des Techniques Modernes de Préparation des Données à Vos Projets d’Apprentissage Automatique
Présentation du tutoriel
Ce tutoriel est divisé en trois parties; elles sont:
- Réduction de la Dimensionnalité
- Algorithmes de Réduction de la Dimensionnalité
- Exemples de Réduction de la Dimensionnalité
- Installation de la Bibliothèque Scikit-Learn
- Ensemble de Données de Classification
- Analyse en Composantes Principales
- Décomposition en Valeurs Singulières
- Analyse Discriminante Linéaire
- Intégration Isomap
- Intégration localement Linéaire
- Intégration linéaire locale modifiée
Réduction de la dimensionnalité
La réduction de la dimensionnalité fait référence aux techniques permettant de réduire le nombre de variables d’entrée dans les données d’apprentissage.
Lorsqu’il s’agit de données de dimension élevée, il est souvent utile de réduire la dimensionnalité en projetant les données dans un sous-espace de dimension inférieure qui capture l' »essence » des données. C’est ce qu’on appelle la réduction de dimensionnalité.
— Page 11, Apprentissage automatique: Une perspective probabiliste, 2012.
Une dimension élevée peut signifier des centaines, des milliers, voire des millions de variables d’entrée.
Moins de dimensions d’entrée signifie souvent moins de paramètres ou une structure plus simple dans le modèle d’apprentissage automatique, appelés degrés de liberté. Un modèle avec trop de degrés de liberté est susceptible de surajuster l’ensemble de données d’entraînement et peut ne pas fonctionner correctement sur de nouvelles données.
Il est souhaitable d’avoir des modèles simples qui généralisent bien, et à leur tour, des données d’entrée avec peu de variables d’entrée. Cela est particulièrement vrai pour les modèles linéaires où le nombre d’entrées et les degrés de liberté du modèle sont souvent étroitement liés.
La réduction de dimensionnalité est une technique de préparation de données réalisée sur des données avant la modélisation. Il peut être effectué après le nettoyage et la mise à l’échelle des données et avant la formation d’un modèle prédictif.
… la réduction de la dimensionnalité donne une représentation plus compacte et plus facilement interprétable du concept cible, concentrant l’attention de l’utilisateur sur les variables les plus pertinentes.
— Page 289, Exploration de données: Outils et Techniques pratiques d’Apprentissage Automatique, 4e édition, 2016.
En tant que tel, toute réduction de dimensionnalité effectuée sur des données d’apprentissage doit également être effectuée sur de nouvelles données, telles qu’un jeu de données de test, un jeu de données de validation et des données lors de la prédiction avec le modèle final.
Vous Voulez Commencer La Préparation Des Données?
Suivez mon cours intensif gratuit de 7 jours par e-mail maintenant (avec un exemple de code).
Cliquez pour vous inscrire et obtenez également une version PDF Ebook gratuite du cours.
Téléchargez votre Mini-cours GRATUIT
Algorithmes de réduction de la dimensionnalité
Il existe de nombreux algorithmes qui peuvent être utilisés pour la réduction de la dimensionnalité.
Deux classes principales de méthodes sont celles tirées de l’algèbre linéaire et celles tirées de l’apprentissage multiple.
Méthodes d’algèbre linéaire
Des méthodes de factorisation matricielle tirées du domaine de l’algèbre linéaire peuvent être utilisées pour la dimensionalité.
Pour en savoir plus sur la factorisation matricielle, voir le tutoriel:
- Une introduction en douceur à la Factorisation Matricielle pour l’apprentissage automatique
Certaines des méthodes les plus populaires incluent:
- Analyse en composantes principales
- Décomposition en valeurs singulières
- Factorisation matricielle non négative
Méthodes d’apprentissage multiples
Les méthodes d’apprentissage multiples recherchent une projection de dimension inférieure d’une entrée de dimension élevée qui capture les propriétés saillantes des données d’entrée.
Certaines des méthodes les plus populaires incluent:
- Intégration isomap
- Intégration localement linéaire
- Mise à l’échelle multidimensionnelle
- Intégration spectrale
- Intégration de voisins stochastiques distribués par t
Chaque algorithme offre une approche différente du défi de la découverte de relations naturelles dans les données à des dimensions inférieures.
Il n’y a pas de meilleur algorithme de réduction de dimensionnalité, ni de moyen facile de trouver le meilleur algorithme pour vos données sans utiliser d’expériences contrôlées.
Dans ce tutoriel, nous allons examiner comment utiliser chaque sous-ensemble de ces algorithmes de réduction de dimensionnalité populaires de la bibliothèque scikit-learn.
Les exemples vous fourniront la base pour copier-coller les exemples et tester les méthodes sur vos propres données.
Nous ne plongerons pas dans la théorie derrière le fonctionnement des algorithmes ni ne les comparerons directement. Pour un bon point de départ sur ce sujet, voir :
- Décomposition des signaux dans les composants, API scikit-learn.
- Apprentissage multiple, API scikit-learn.
Plongeons dedans.
Exemples de réduction de dimensionnalité
Dans cette section, nous verrons comment utiliser les algorithmes populaires de réduction de dimensionnalité dans scikit-learn.
Ceci inclut un exemple d’utilisation de la technique de réduction de la dimensionnalité en tant que transformation de données dans un pipeline de modélisation et d’évaluation d’un ajustement du modèle sur les données.
Les exemples sont conçus pour que vous puissiez copier-coller dans votre propre projet et appliquer les méthodes à vos propres données. Certains algorithmes disponibles dans la bibliothèque scikit-learn ne sont pas démontrés car ils ne peuvent pas être utilisés directement comme transformation de données étant donné la nature de l’algorithme.
En tant que tel, nous utiliserons un ensemble de données de classification synthétique dans chaque exemple.
Installation de la bibliothèque Scikit-Learn
Tout d’abord, installons la bibliothèque.
Ne sautez pas cette étape car vous devrez vous assurer que la dernière version est installée.
Vous pouvez installer la bibliothèque scikit-learn à l’aide du programme d’installation pip Python, comme suit:
1
|
sudo pip install scikit-learn
|
For additional installation instructions specific to your platform, see:
- Installing scikit-learn
Next, let’s confirm that the library is installed and you are using a modern version.
Run the following script to print the library version number.
1
2
3
|
# check scikit-learn version
import sklearn
print(sklearn.__version__)
|
Running the example, you should see the following version number or higher.
1
|
0.23.0
|
Ensemble de données de classification
Nous utiliserons la fonction make_classification() pour créer un ensemble de données de classification binaire de test.
L’ensemble de données aura 1 000 exemples avec 20 fonctionnalités d’entrée, dont 10 informatives et 10 redondantes. Cela permet à chaque technique d’identifier et de supprimer des fonctionnalités d’entrée redondantes.
La graine aléatoire fixe pour le générateur de nombres pseudo-aléatoires garantit que nous générons le même ensemble de données synthétiques à chaque exécution du code.
An example of creating and summarizing the synthetic classification dataset is listed below.
1
2
3
4
5
6
|
# synthetic classification dataset
from sklearn.les ensembles de données importent make_classification
# définir l’ensemble de données
X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=10, random_state=7)
# résumer l’ensemble de données
print(X.shape, y.shape)
|
L’exécution de l’exemple crée l’ensemble de données et indique le nombre de lignes et de colonnes correspondant à nos attentes.
1
|
(1000, 20) (1000,)
|
It is a binary classification task and we will evaluate a LogisticRegression model after each dimensionality reduction transform.
Le modèle sera évalué en utilisant l’étalon-or de la validation croisée stratifiée répétée de 10 fois. La précision de la classification de la moyenne et de l’écart type pour tous les plis et répétitions sera rapportée.
L’exemple ci-dessous évalue le modèle sur l’ensemble de données brutes comme point de comparaison.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
# évaluer le modèle de régression logistique sur les données brutes
à partir de la moyenne d’importation numpy
à partir de numpy importez std
depuis sklearn.les ensembles de données importent make_classification
depuis sklearn.model_selection import cross_val_score
depuis sklearn.model_selection import RepeatedStratifiedKFold
depuis sklearn.linear_model import LogisticRegression
# define dataset
X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=10, random_state=7)
# define the model
model = LogisticRegression()
# evaluate model
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
n_scores = cross_val_score(model, X, y, scoring=’accuracy’, cv=cv, n_jobs=-1)
# report performance
print(‘Accuracy: %.3f (%.3f) ‘%(mean(n_scores), std(n_scores)))
|
L’exécution de l’exemple évalue la régression logistique sur l’ensemble de données brutes avec les 20 colonnes, obtenant une précision de classification d’environ 82,4%.
Une transformation réussie de réduction de la dimensionnalité sur ces données devrait aboutir à un modèle plus précis que cette ligne de base, bien que cela puisse ne pas être possible avec toutes les techniques.
Remarque: nous n’essayons pas de « résoudre » cet ensemble de données, il suffit de fournir des exemples de travail que vous pouvez utiliser comme point de départ.
1
|
Accuracy: 0.824 (0.034)
|
Next, we can start looking at examples of dimensionality reduction algorithms applied to this dataset.
I have made some minimal attempts to tune each method to the dataset. Chaque méthode de réduction de dimensionnalité sera configurée pour réduire les 20 colonnes d’entrée à 10 si possible.
Nous utiliserons un Pipeline pour combiner la transformation de données et le modèle en une unité atomique qui peut être évaluée à l’aide de la procédure de validation croisée; par exemple:
1
2
3
4
|
…
# define the pipeline
steps =
model = Pipeline(steps=steps)
|
Let’s get started.
Can you get a better result for one of the algorithms?
Faites-le moi savoir dans les commentaires ci-dessous.
Analyse en composantes principales
L’analyse en composantes principales, ou PCA, pourrait être la technique la plus populaire pour la réduction de la dimensionnalité avec des données denses (peu de valeurs nulles).
Pour en savoir plus sur le fonctionnement de la PCA, consultez le tutoriel :
- Comment Calculer l’Analyse en Composantes Principales (PCA) à partir de zéro en Python
La bibliothèque scikit-learn fournit l’implémentation de la classe PCA de l’Analyse en composantes Principales qui peut être utilisée comme transformation de données de réduction de dimensionnalité. L’argument « n_components » peut être défini pour configurer le nombre de dimensions souhaitées dans la sortie de la transformation.
L’exemple complet d’évaluation d’un modèle avec réduction de la dimensionnalité de l’ACP est présenté ci-dessous.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# evaluate pca with logistic regression algorithm for classification
de l’importation numpy moyenne
de l’importation numpy std
de sklearn.les ensembles de données importent make_classification
depuis sklearn.model_selection import cross_val_score
depuis sklearn.model_selection import RepeatedStratifiedKFold
depuis sklearn.pipeline import Pipeline
depuis sklearn.la décomposition import PCA
depuis sklearn.linear_model import LogisticRegression
# define dataset
X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=10, random_state=7)
# define the pipeline
steps =
model = Pipeline(steps=steps)
# evaluate model
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
n_scores = cross_val_score(model, X, y, scoring=’accuracy’, cv=cv, n_jobs=-1)
# report performance
print(‘Accuracy: %.3f (%.3f)’%(mean(n_scores), std(n_scores)))
|
L’exécution de l’exemple évalue le pipeline de modélisation avec réduction de la dimensionnalité et un modèle prédictif de régression logistique.
Remarque : Vos résultats peuvent varier en fonction de la nature stochastique de l’algorithme ou de la procédure d’évaluation, ou des différences de précision numérique. Envisagez d’exécuter l’exemple plusieurs fois et comparez le résultat moyen.
Dans ce cas, nous ne voyons aucune augmentation des performances du modèle lors de l’utilisation de la transformation PCA.
1
|
Accuracy: 0.824 (0.034)
|
Singular Value Decomposition
Singular Value Decomposition, or SVD, is one of the most popular techniques for dimensionality reduction for sparse data (data with many zero values).
Pour en savoir plus sur le fonctionnement de la SVD, consultez le tutoriel :
- Comment Calculer la SVD à partir de zéro avec Python
La bibliothèque scikit-learn fournit l’implémentation de la classe TruncatedSVD de la Décomposition en valeurs singulières qui peut être utilisée comme transformation de données de réduction de dimensionnalité. L’argument « n_components » peut être défini pour configurer le nombre de dimensions souhaitées dans la sortie de la transformation.
L’exemple complet d’évaluation d’un modèle avec réduction de dimensionnalité SVD est répertorié ci-dessous.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# évaluer svd avec un algorithme de régression logistique pour classification
de l’importation numpy moyenne
de l’importation numpy std
de sklearn.les ensembles de données importent make_classification
depuis sklearn.model_selection import cross_val_score
depuis sklearn.model_selection import RepeatedStratifiedKFold
depuis sklearn.pipeline import Pipeline
depuis sklearn.la décomposition import TruncatedSVD
depuis sklearn.linear_model import LogisticRegression
# define dataset
X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=10, random_state=7)
# define the pipeline
steps =
model = Pipeline(steps=steps)
# evaluate model
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
n_scores = cross_val_score(model, X, y, scoring=’accuracy’, cv=cv, n_jobs=-1)
# report performance
print(‘Accuracy: %.3f (%.3f)’%(mean(n_scores), std(n_scores)))
|
L’exécution de l’exemple évalue le pipeline de modélisation avec réduction de la dimensionnalité et un modèle prédictif de régression logistique.
Remarque : Vos résultats peuvent varier en fonction de la nature stochastique de l’algorithme ou de la procédure d’évaluation, ou des différences de précision numérique. Envisagez d’exécuter l’exemple plusieurs fois et comparez le résultat moyen.
Dans ce cas, nous ne voyons aucune augmentation des performances du modèle lors de l’utilisation de la transformation SVD.
1
|
Accuracy: 0.824 (0.034)
|
Linear Discriminant Analysis
Linear Discriminant Analysis, or LDA, is a multi-class classification algorithm that can be used for dimensionality reduction.
Le nombre de dimensions pour la projection est limité à 1 et C-1, où C est le nombre de classes. Dans ce cas, notre jeu de données est un problème de classification binaire (deux classes), limitant le nombre de dimensions à 1.
Pour en savoir plus sur LDA pour la réduction de la dimensionnalité, consultez le tutoriel:
- Analyse Discriminante linéaire pour la Réduction de la dimensionnalité en Python
La bibliothèque scikit-learn fournit l’implémentation de la classe LinearDiscriminantAnalysis de l’Analyse Discriminante Linéaire qui peut être utilisée comme transformation de données de réduction de la dimensionnalité. L’argument « n_components » peut être défini pour configurer le nombre de dimensions souhaitées dans la sortie de la transformation.
L’exemple complet d’évaluation d’un modèle avec réduction de dimensionnalité LDA est répertorié ci-dessous.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# évaluer lda avec un algorithme de régression logistique pour classification
de l’importation numpy moyenne
de l’importation numpy std
de sklearn.les ensembles de données importent make_classification
depuis sklearn.model_selection import cross_val_score
depuis sklearn.model_selection import RepeatedStratifiedKFold
depuis sklearn.pipeline import Pipeline
depuis sklearn.discriminant_analysis import LinearDiscriminantAnalysis
depuis sklearn.linear_model import LogisticRegression
# define dataset
X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=10, random_state=7)
# define the pipeline
steps =
model = Pipeline(steps=steps)
# evaluate model
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
n_scores = cross_val_score(model, X, y, scoring=’accuracy’, cv=cv, n_jobs=-1)
# report performance
print(‘Accuracy: %.3f (%.3f)’%(mean(n_scores), std(n_scores)))
|
L’exécution de l’exemple évalue le pipeline de modélisation avec réduction de la dimensionnalité et un modèle prédictif de régression logistique.
Remarque : Vos résultats peuvent varier en fonction de la nature stochastique de l’algorithme ou de la procédure d’évaluation, ou des différences de précision numérique. Envisagez d’exécuter l’exemple plusieurs fois et comparez le résultat moyen.
Dans ce cas, nous pouvons voir une légère augmentation des performances par rapport à l’ajustement de base sur les données brutes.
1
|
Accuracy: 0.825 (0.034)
|
Isomap Embedding
Isomap Embedding, or Isomap, creates an embedding of the dataset and attempts to preserve the relationships in the dataset.
La bibliothèque scikit-learn fournit l’implémentation de la classe Isomap de l’intégration Isomap qui peut être utilisée comme transformation de données de réduction de dimensionnalité. L’argument « n_components » peut être défini pour configurer le nombre de dimensions souhaitées dans la sortie de la transformation.
L’exemple complet d’évaluation d’un modèle avec réduction de dimensionnalité SVD est répertorié ci-dessous.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# évaluer isomap avec un algorithme de régression logistique pour classification
de l’importation numpy moyenne
de l’importation numpy std
de sklearn.les ensembles de données importent make_classification
depuis sklearn.model_selection import cross_val_score
depuis sklearn.model_selection import RepeatedStratifiedKFold
depuis sklearn.pipeline import Pipeline
depuis sklearn.l’importation de manifold Isomap
depuis sklearn.linear_model import LogisticRegression
# define dataset
X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=10, random_state=7)
# define the pipeline
steps =
model = Pipeline(steps=steps)
# evaluate model
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
n_scores = cross_val_score(model, X, y, scoring=’accuracy’, cv=cv, n_jobs=-1)
# report performance
print(‘Accuracy: %.3f (%.3f)’%(mean(n_scores), std(n_scores)))
|
L’exécution de l’exemple évalue le pipeline de modélisation avec réduction de la dimensionnalité et un modèle prédictif de régression logistique.
Remarque : Vos résultats peuvent varier en fonction de la nature stochastique de l’algorithme ou de la procédure d’évaluation, ou des différences de précision numérique. Envisagez d’exécuter l’exemple plusieurs fois et comparez le résultat moyen.
Dans ce cas, nous pouvons voir une augmentation des performances avec la transformation de données Isomap par rapport à l’ajustement de base sur les données brutes.
1
|
Accuracy: 0.888 (0.029)
|
Locally Linear Embedding
Locally Linear Embedding, or LLE, creates an embedding of the dataset and attempts to preserve the relationships between neighborhoods in the dataset.
La bibliothèque scikit-learn fournit l’implémentation de la classe LocallyLinearEmbedding de l’intégration linéaire locale qui peut être utilisée comme transformation de données de réduction de dimensionnalité. L’argument « n_components » peut être défini pour configurer le nombre de dimensions souhaitées dans la sortie de la transformation
L’exemple complet d’évaluation d’un modèle avec réduction de la dimensionnalité LLE est répertorié ci-dessous.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# évaluer les régressions lle et logistiques pour la taxonomie
de numpy import signifie
de numpy import std
de sklearn.les ensembles de données importent make_classification
depuis sklearn.model_selection import cross_val_score
depuis sklearn.model_selection import RepeatedStratifiedKFold
depuis sklearn.pipeline import Pipeline
depuis sklearn.importation de manifold LocallyLinearEmbedding
depuis sklearn.linear_model import LogisticRegression
# define dataset
X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=10, random_state=7)
# define the pipeline
steps =
model = Pipeline(steps=steps)
# evaluate model
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
n_scores = cross_val_score(model, X, y, scoring=’accuracy’, cv=cv, n_jobs=-1)
# report performance
print(‘Accuracy: %.3f (%.3f)’%(mean(n_scores), std(n_scores)))
|
L’exécution de l’exemple évalue le pipeline de modélisation avec réduction de la dimensionnalité et un modèle prédictif de régression logistique.
Remarque : Vos résultats peuvent varier en fonction de la nature stochastique de l’algorithme ou de la procédure d’évaluation, ou des différences de précision numérique. Envisagez d’exécuter l’exemple plusieurs fois et comparez le résultat moyen.
Dans ce cas, nous pouvons voir une augmentation des performances avec la transformation de données LLE par rapport à l’ajustement de base sur les données brutes.
1
|
Accuracy: 0.886 (0.028)
|
Modified Locally Linear Embedding
Modified Locally Linear Embedding, or Modified LLE, is an extension of Locally Linear Embedding that creates multiple weighting vectors for each neighborhood.
La bibliothèque scikit-learn fournit l’implémentation de la classe LocallyLinearEmbedding d’une intégration linéaire locale modifiée qui peut être utilisée comme transformation de données de réduction de dimensionnalité. L’argument « method » doit être défini sur ‘modified’ et l’argument « n_components » peut être défini pour configurer le nombre de dimensions souhaitées dans la sortie de la transformation qui doit être inférieur à l’argument « n_neighbors ».
L’exemple complet d’évaluation d’un modèle avec réduction de dimensionnalité LLE modifiée est présenté ci-dessous.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# évaluez les régressions lle et logistiques modifiées pour classification
de l’importation numpy moyenne
de l’importation numpy std
de sklearn.les ensembles de données importent make_classification
depuis sklearn.model_selection import cross_val_score
depuis sklearn.model_selection import RepeatedStratifiedKFold
depuis sklearn.pipeline import Pipeline
depuis sklearn.importation de manifold LocallyLinearEmbedding
depuis sklearn.linear_model import LogisticRegression
# define dataset
X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=10, random_state=7)
# define the pipeline
steps =
model = Pipeline(steps=steps)
# evaluate model
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
n_scores = cross_val_score(model, X, y, scoring=’accuracy’, cv=cv, n_jobs=-1)
# report performance
print(‘Accuracy: %.3f (%.3f)’%(mean(n_scores), std(n_scores)))
|
L’exécution de l’exemple évalue le pipeline de modélisation avec réduction de la dimensionnalité et un modèle prédictif de régression logistique.
Remarque : Vos résultats peuvent varier en fonction de la nature stochastique de l’algorithme ou de la procédure d’évaluation, ou des différences de précision numérique. Envisagez d’exécuter l’exemple plusieurs fois et comparez le résultat moyen.
Dans ce cas, nous pouvons voir une augmentation des performances avec la transformation de données LLE modifiée par rapport à l’ajustement de base sur les données brutes.
1
|
Accuracy: 0.846 (0.036)
|
Further Reading
This section provides more resources on the topic if you are looking to go deeper.
Tutoriels
- Introduction à la Réduction de la Dimensionnalité pour l’Apprentissage Automatique
- Analyse en Composantes Principales pour la Réduction de la Dimensionnalité en Python
- Décomposition en Valeurs Singulières pour la Réduction de la Dimensionnalité en Python
- Analyse Discriminante Linéaire pour la Réduction de la Dimensionnalité en Python
API
- Décomposition des signaux dans les composants, API scikit-learn.
- Apprentissage multiple, API scikit-learn.
Résumé
Dans ce tutoriel, vous avez découvert comment ajuster et évaluer les algorithmes de réduction de la dimensionnalité supérieure en Python.
Plus précisément, vous avez appris:
- La réduction de dimensionnalité cherche une représentation de dimension inférieure des données d’entrée numériques qui préserve les relations saillantes dans les données.
- Il existe de nombreux algorithmes de réduction de dimensionnalité différents et aucune méthode unique pour tous les ensembles de données.
- Comment implémenter, adapter et évaluer la réduction de la dimensionnalité supérieure en Python avec la bibliothèque d’apprentissage automatique scikit-learn.
Avez-vous des questions?
Posez vos questions dans les commentaires ci-dessous et je ferai de mon mieux pour y répondre.
Maîtrisez la Préparation des données modernes !
Préparez vos Données d’Apprentissage Automatique en quelques Minutes
…avec seulement quelques lignes de code python
Découvrez comment dans mon nouvel Ebook:
Préparation des données pour l’Apprentissage automatique
Il fournit des tutoriels d’auto-apprentissage avec un code de travail complet sur:
Sélection des fonctionnalités, RFE, Nettoyage des données, Transformations de données, Mise à l’échelle, Réduction de la Dimensionnalité, et bien plus encore…
Apportez Des Techniques Modernes de Préparation des Données à Vos Projets d’Apprentissage Automatique
Voyez Ce qu’il y a à l’intérieur