[PYTHON] <Cours> Machine learning Chapitre 4: Analyse des principaux composants

Apprentissage automatique

table des matières Chapitre 1: Modèle de régression linéaire [Chapitre 2: Modèle de régression non linéaire] (https://qiita.com/matsukura04583/items/baa3f2269537036abc57) [Chapitre 3: Modèle de régression logistique] (https://qiita.com/matsukura04583/items/0fb73183e4a7a6f06aa5) [Chapitre 4: Analyse des composants principaux] (https://qiita.com/matsukura04583/items/b3b5d2d22189afc9c81c) [Chapitre 5: Algorithme 1 (méthode de voisinage k (kNN))] (https://qiita.com/matsukura04583/items/543719b44159322221ed) [Chapitre 6: Algorithme 2 (k-means)] (https://qiita.com/matsukura04583/items/050c98c7bb1c9e91be71) [Chapitre 7: Support Vector Machine] (https://qiita.com/matsukura04583/items/6b718642bcbf97ae2ca8)

Chapitre 4: Analyse en composantes principales

Qu'est-ce que l'analyse en composantes principales?

PCA1.jpg

PCA2.jpg

PCA3.jpg

(Pratique 4) Compression dimensionnelle des données de test du cancer du sein à l'aide de scicit learn

Commencez avec Google Drive Map

from google.colab import drive
drive.mount('/content/drive')

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegressionCV
from sklearn.metrics import confusion_matrix
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
%matplotlib inline

paramètres sys.path

Ci-dessous, nous créons un dossier study_ai_ml directement sous Mon Drive dans Google Drive.

cancer_df = pd.read_csv('/content/drive/My Drive/study_ai_ml/data/cancer.csv')
print('cancer df shape: {}'.format(cancer_df.shape))

résultat


cancer df shape: (569, 33)
cancer_df
スクリーンショット 2019-12-13 16.53.21.png
cancer_df.drop('Unnamed: 32', axis=1, inplace=True)
cancer_df
スクリーンショット 2019-12-13 16.56.55.png

** ・ Diagnostic: résultat du diagnostic (B bénin / M malin) ・ Les variables explicatives sont classées par régression logistique avec la variable objective dans la deuxième colonne après la troisième colonne **

#Extraction de la variable objective
y = cancer_df.diagnosis.apply(lambda d: 1 if d == 'M' else 0)
#Extraction de variables explicatives
X = cancer_df.loc[:, 'radius_mean':]
#Données séparées pour la formation et les tests
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

#Standardisation
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

#Apprendre avec la régression logistique
logistic = LogisticRegressionCV(cv=10, random_state=0)
logistic.fit(X_train_scaled, y_train)

#Vérification
print('Train score: {:.3f}'.format(logistic.score(X_train_scaled, y_train)))
print('Test score: {:.3f}'.format(logistic.score(X_test_scaled, y_test)))
print('Confustion matrix:\n{}'.format(confusion_matrix(y_true=y_test, y_pred=logistic.predict(X_test_scaled))))

résultat


Train score: 0.988
Test score: 0.972
Confustion matrix:
[[89  1]
 [ 3 50]]

** ・ Confirmé qu'il peut être classé avec un score de vérification de 97% **

pca = PCA(n_components=30)
pca.fit(X_train_scaled)
plt.bar([n for n in range(1, len(pca.explained_variance_ratio_)+1)], pca.explained_variance_ratio_)
スクリーンショット 2019-12-13 17.02.01.png
# PCA
#Comprimé à 2 dimensions
pca = PCA(n_components=2)
X_train_pca = pca.fit_transform(X_train_scaled)
print('X_train_pca shape: {}'.format(X_train_pca.shape))
# X_train_pca shape: (426, 2)

#Taux de cotisation
print('explained variance ratio: {}'.format(pca.explained_variance_ratio_))
# explained variance ratio: [ 0.43315126  0.19586506]

#Tracer sur un nuage de points
temp = pd.DataFrame(X_train_pca)
temp['Outcome'] = y_train.values
b = temp[temp['Outcome'] == 0]
m = temp[temp['Outcome'] == 1]
plt.scatter(x=b[0], y=b[1], marker='o') #Benness est marqué avec ○
plt.scatter(x=m[0], y=m[1], marker='^') #Malin est marqué par △
plt.xlabel('PC 1') #Axe X du premier composant principal
plt.ylabel('PC 2') #Axe Y pour le deuxième composant principal
スクリーンショット 2019-12-13 17.03.18.png
#Standardisation
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

#Apprendre avec la régression logistique
logistic = LogisticRegressionCV(cv=10, random_state=0)
logistic.fit(X_train_scaled, y_train)

#Vérification
print('Train score: {:.3f}'.format(logistic.score(X_train_scaled, y_train)))
print('Test score: {:.3f}'.format(logistic.score(X_test_scaled, y_test)))
print('Confustion matrix:\n{}'.format(confusion_matrix(y_true=y_test, y_pred=logistic.predict(X_test_scaled))))

résultat


Train score: 0.927
Test score: 0.944
Confustion matrix:
[[87  3]
 [ 5 48]]

** ・ Confirmé qu'il peut être classé avec un score de vérification de 94% ** Même si le nombre de dimensions était réduit à 2, le score de vérification n'a pas chuté beaucoup de 97% à 94%, et le résultat a été que le nombre de dimensions a été réduit tout en maintenant la précision.

Sites connexes

Chapitre 1: Modèle de régression linéaire [Chapitre 2: Modèle de régression non linéaire] (https://qiita.com/matsukura04583/items/baa3f2269537036abc57) [Chapitre 3: Modèle de régression logistique] (https://qiita.com/matsukura04583/items/0fb73183e4a7a6f06aa5) [Chapitre 4: Analyse des composants principaux] (https://qiita.com/matsukura04583/items/b3b5d2d22189afc9c81c) [Chapitre 5: Algorithme 1 (méthode de voisinage k (kNN))] (https://qiita.com/matsukura04583/items/543719b44159322221ed) [Chapitre 6: Algorithme 2 (k-means)] (https://qiita.com/matsukura04583/items/050c98c7bb1c9e91be71) [Chapitre 7: Support Vector Machine] (https://qiita.com/matsukura04583/items/6b718642bcbf97ae2ca8)

Recommended Posts

<Cours> Machine learning Chapitre 4: Analyse des principaux composants
Apprendre sans enseignant 3 Analyse des principales composantes
<Course> Machine learning Chapitre 6: Algorithme 2 (k-means)
<Course> Machine Learning Chapitre 7: Support Vector Machine
Python: apprentissage non supervisé: analyse principale
Ceci et cela de l'analyse en composantes principales
Défis d'apprentissage automatique de Coursera en Python: ex7-2 (analyse principale)
<Subject> Machine learning Chapitre 3: Modèle de régression logistique
<Cours> Machine learning Chapitre 1: Modèle de régression linéaire
<Cours> Machine learning Chapitre 2: Modèle de régression non linéaire
Mémo du cours d'apprentissage automatique
Analyse en composantes principales (Analyse en composantes principales: ACP)
PRML Chapitre 12 Mise en œuvre de l'analyse principale bayésienne Python
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer Chapitre 7 Analyse de régression
[Traitement du langage 100 coups 2020] Chapitre 6: Machine learning
Algorithme d'apprentissage automatique (analyse de régression multiple)
Algorithme d'apprentissage automatique (analyse de régression unique)
Reconnaissance faciale à l'aide de l'analyse des composants principaux
Analyse des composants principaux avec Spark ML
100 Language Processing Knock 2020 Chapitre 6: Apprentissage automatique
Apprentissage automatique: analyse discriminante linéaire supervisée
Apprentissage automatique
Les débutants en apprentissage automatique suivent le cours d'apprentissage en profondeur de Coursera
TensorFlow Machine Learning Cookbook Chapitre 2 Personnellement bouché
[Python] Première analyse de données / apprentissage automatique (Kaggle)
TensorFlow Machine Learning Cookbook Chapitre 3 Personnellement bouché
Prétraitement dans l'apprentissage automatique 1 Processus d'analyse des données
[Apprentissage automatique] Analyse de régression à l'aide de scicit learn
TensorFlow Machine Learning Cookbook Chapitre 6 (ou plutôt, la troisième ligne) où je suis personnellement resté coincé
Analyse des composants principaux avec Livedoor News Corpus --Préparation--
J'ai essayé d'analyser les principaux composants avec les données du Titanic!
[Python] Analyse de données, pratique du machine learning (Kaggle) -Prétraitement des données-
Analyse de l'utilisation de l'espace partagé par l'apprentissage automatique
[Memo] Apprentissage automatique
Classification de l'apprentissage automatique
Histoire de l'analyse de données par apprentissage automatique
Exemple d'apprentissage automatique
2. Analyse multivariée décrite dans Python 3-2. Analyse en composantes principales (algorithme)
Filtrage coordonné avec analyse des composants principaux et clustering K-means
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer du chapitre 2
Compréhension mathématique de l'analyse en composantes principales depuis le début
Python Scikit-learn Analyse de régression linéaire Analyse de régression simple non linéaire Apprentissage automatique
Clustering et analyse en composantes principales par méthode K-means (débutant)
Défiez l'analyse des composants principaux des données textuelles avec Python
Analyse en composantes principales Analyser les nombres manuscrits à l'aide de l'ACP. Partie 2
Analyse des composants principaux à l'aide de python de nim avec nimpy
Analyse en composants principaux (PCA) et analyse en composants indépendants (ICA) avec python
Analyse en composantes principales Analyser les nombres manuscrits à l'aide de l'ACP. Partie 1
2. Analyse multivariée expliquée dans Python 3-1. Analyse en composantes principales (scikit-learn)
Résumé du didacticiel d'apprentissage automatique
Apprentissage automatique sur le surapprentissage
Apprentissage automatique ⑤ Résumé AdaBoost
Régression logistique d'apprentissage automatique
Machine de vecteur de support d'apprentissage automatique
Étudier l'apprentissage automatique ~ matplotlib ~
Régression linéaire d'apprentissage automatique
Bibliothèque d'apprentissage automatique dlib
Apprentissage automatique (TensorFlow) + Lotto 6
Apprenez en quelque sorte le machine learning