** 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.
** De plus, je voudrais comparer dans le cas du modèle de régression. ** **
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
#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)
#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')
corrcoef ()
de Numpy est utilisée pour la matrice de corrélation, mais la corrélation entre les variables est calculée en transposant les lignes et les colonnes des données passées avec .T
. de
heatmap () `affiche la valeur de chaque cellule de la figure.#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)
#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)
#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()
#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)
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()
tight_layout ()
ajuste automatiquement les paramètres du sous-tracé (échelle de l'axe, étiquette de l'axe, plage de titre) afin que le sous-tracé s'adapte parfaitement à la zone du graphique.