2. Analyse multivariée expliquée dans Python 8-2. Méthode de voisinage k [méthode de pondération] [modèle de retour]

** Comment ces différences affectent-elles les résultats des prévisions? ** ** Le cas du modèle de classification de Dernière fois est présenté à titre d'exemple.

2_8_2_01.PNG

** De plus, je voudrais comparer dans le cas du modèle de régression. ** **

⑴ Bibliothèque d'importation

import numpy as np
import pandas as pd

# scikit-apprendre la bibliothèque
from sklearn.datasets import load_boston             #Ensemble de données sur les prix des maisons de Boston
from sklearn.model_selection import train_test_split #Utilitaire de fractionnement de données
from sklearn.neighbors import KNeighborsRegressor    # k-Méthode du modèle de régression NR

#Bibliothèque de visualisation
import matplotlib.pyplot as plt
import seaborn as sns

#Module d'affichage japonais de matplotlib
!pip install japanize-matplotlib
import japanize_matplotlib

1. Préparez les données

⑵ Acquisition et organisation des données

#Obtenir l'ensemble de données
boston = load_boston()

#Convertir les variables explicatives en DataFrame
df = pd.DataFrame(boston.data, columns=boston.feature_names)

#Concaténer les variables objectives
df = pd.concat([df, pd.DataFrame(boston.target, columns=['MEDV'])], axis=1)
print(df)

2_8_2_02.PNG

(3) Examen de l'axe d'analyse par matrice de corrélation

#Créer une matrice de corrélation
correlation_matrix = np.corrcoef(df.T)

#Libellé de ligne / colonne
names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 
         'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']

#Convertir la matrice de corrélation en DataFrame
correlation_df = pd.DataFrame(correlation_matrix, columns = names, index = names)

#Dessinez une carte thermique
plt.figure(figsize=(10,8))
sns.heatmap(correlation_df, annot=True, cmap='coolwarm')

2_8_2_03.PNG

⑷ Extraction et division des données

#Extraire seulement 2 variables
df_extraction = df[['RM', 'MEDV']]

#Variable X,définir y
X = np.array(df_extraction['RM'])
y = np.array(df_extraction['MEDV'])

X = X.reshape(len(X), 1) #Convertir en 2D
y = y.reshape(len(y), 1)

#Division des données pour la formation / les tests
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state = 0)

X_train = X_train.reshape(len(X_train), 1) #Convertir en 2D
X_test = X_test.reshape(len(X_test), 1)
y_train = y_train.reshape(len(y_train), 1)
y_test = y_test.reshape(len(y_test), 1)

2. Examen du paramètre k

⑸ Exécutez k-NR tout en modifiant le paramètre k

#Variable qui stocke le taux de précision
train_accuracy = []
test_accuracy = []

for k in range(1,21):
    kNR = KNeighborsRegressor(n_neighbors = k) #Génération d'instance
    kNR.fit(X_train, y_train) #Apprentissage
    train_accuracy.append(kNR.score(X_train, y_train)) #Taux de précision de la formation
    test_accuracy.append(kNR.score(X_test, y_test)) #Taux d'exactitude des tests

#Convertir le taux de réponse correct en tableau
training_accuracy = np.array(train_accuracy)
test_accuracy = np.array(test_accuracy)

⑹ Sélectionnez le paramètre k optimal

#Modifications du taux de réponse correct pour la formation et les tests
plt.figure(figsize=(6, 4))

plt.plot(range(1,21), train_accuracy, label='Entraînement')
plt.plot(range(1,21), test_accuracy, label='tester')

plt.xticks(np.arange(0, 21, 1)) #échelle de l'axe des x
plt.xlabel('nombre k')
plt.ylabel('Taux de réponse correct')
plt.title('Transition du taux de réponse correcte')

plt.grid()
plt.legend()

#Transition de la différence de taux de réponse correcte
plt.figure(figsize=(6, 4))

difference = np.abs(train_accuracy - test_accuracy) #Calculez la différence
plt.plot(range(1,21), difference, label='Différence')

plt.xticks(np.arange(0, 21, 1)) #échelle de l'axe des x
plt.xlabel('nombre k')
plt.ylabel('Différence(train - test)')
plt.title('Transition de la différence de taux de réponse correcte')

plt.grid()
plt.legend()

plt.show()

2_8_2_05.PNG

3. Exécution et évaluation du modèle

⑺ Créer des données factices

#Générer une séquence d'égalité
t = np.linspace(1, 10, 1000) #Valeur de départ,Valeur finale,Nombre d'éléments

#Convertir la forme en 2D
T = t.reshape(1000, 1)

⑻ Exécution et visualisation du modèle de régression

n_neighbors = 14

plt.figure(figsize=(12,5))

for i, w in enumerate(['uniform', 'distance']):
    model = KNeighborsRegressor(n_neighbors, weights=w)
    model = model.fit(X, y)
    y_ = model.predict(T)

    plt.subplot(1, 2, i + 1)
    plt.scatter(X, y, color='limegreen', label='Les données')
    plt.plot(T, y_, color='navy', lw=1, label='Valeur prédite')
    plt.legend()
    plt.title("weights = '%s'" % (w))

plt.tight_layout()
plt.show()

2_8_2_06.PNG

Recommended Posts

2. Analyse multivariée expliquée dans Python 8-2. Méthode de voisinage k [méthode de pondération] [modèle de retour]
2. Analyse multivariée expliquée dans Python 8-1. Méthode de voisinage k (scikit-learn)
2. Analyse multivariée énoncée dans Python 8-3. Méthode de voisinage K [vérification d'intersection]
2. Analyse multivariée définie dans Python 1-1. Analyse de régression simple (scikit-learn)
2. Analyse multivariée expliquée dans Python 7-3. Arbre de décision [arbre de retour]
2. Analyse multivariée décrite dans Python 2-1. Analyse de régression multiple (scikit-learn)
2. Analyse multivariée décrite dans Python 1-2. Analyse de régression simple (algorithme)
2. Analyse multivariée expliquée dans Python 5-3. Analyse de régression logistique (modèles statistiques)
2. Analyse multivariée définie dans Python 6-2. Régression Ridge / Régression Lasso (scikit-learn) [Régression Ridge vs régression Lasso]
2. Analyse multivariée détaillée dans Python 2-3. Analyse de régression multiple [taux d’infection au COVID-19]
2. Analyse multivariée décrite dans Python 6-1. Régression de crête / Régression de lasso (scikit-learn) [régression multiple vs régression de crête]
2. Analyse multivariée décrite dans Python 3-2. Analyse en composantes principales (algorithme)
2. Analyse multivariée expliquée dans Python 3-1. Analyse en composantes principales (scikit-learn)
2. Analyse multivariée décrite dans Python 6-3. Régression Ridge / Régression Lasso (scikit-learn) [Fonctionnement de la régularisation]
2. Analyse multivariée expliquée dans Python 7-2. Arbre de décision [différence de critères de division]
Analyse de régression avec Python
Implémentation de la méthode k-voisinage en python à partir de scikit learn
Première analyse de régression simple en Python
[Python] [scikit-learn] k-Introduction au mémo de la méthode du voisin le plus proche
Méthode d'analyse de régression
Méthode Simplex (méthode unique) en Python
Méthode privée en python
Analyse d'association en Python
[Apprentissage automatique] Ecrivez vous-même la méthode k-plus proche voisin en python et reconnaissez les nombres manuscrits.
Une implémentation Python simple de la méthode k-voisinage (k-NN)
Expression de régression multiple en Python
Visualiser le modèle Keras avec Python 3.5
Méthode de voisinage K (classification multi-classes)
Régression linéaire en ligne en Python
Suppression des substitutions de méthode en Python
[Analyse du modèle SIR] Pic du nombre d'infections dans diverses régions du Japon ♬
[Python] PCA scratch dans l'exemple de "Introduction à la méthode d'analyse multivariée"
[Test statistique 2e année / quasi 1e année] Formation à l'analyse régressive avec Python (2)
[Test statistique 2e année / quasi 1e année] Formation à l'analyse régressive avec Python (1)