** Wie wirken sich diese Unterschiede auf die Prognoseergebnisse aus? ** ** ** Der Fall des Klassifizierungsmodells von Last time wird als Beispiel gezeigt.
** Außerdem möchte ich im Fall des Regressionsmodells vergleichen. ** ** **
import numpy as np
import pandas as pd
# scikit-Bibliothek lernen
from sklearn.datasets import load_boston #Boston Home Preisdatensatz
from sklearn.model_selection import train_test_split #Dienstprogramm zur Datenaufteilung
from sklearn.neighbors import KNeighborsRegressor # k-NR-Regressionsmodellmethode
#Visualisierungsbibliothek
import matplotlib.pyplot as plt
import seaborn as sns
#Japanisches Anzeigemodul von matplotlib
!pip install japanize-matplotlib
import japanize_matplotlib
#Datensatz abrufen
boston = load_boston()
#Konvertieren Sie erklärende Variablen in DataFrame
df = pd.DataFrame(boston.data, columns=boston.feature_names)
#Verketten Sie objektive Variablen
df = pd.concat([df, pd.DataFrame(boston.target, columns=['MEDV'])], axis=1)
print(df)
#Erstellen Sie eine Korrelationsmatrix
correlation_matrix = np.corrcoef(df.T)
#Zeilen- / Spaltenbezeichnung
names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE',
'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']
#Konvertieren Sie die Korrelationsmatrix in DataFrame
correlation_df = pd.DataFrame(correlation_matrix, columns = names, index = names)
#Zeichnen Sie eine Heatmap
plt.figure(figsize=(10,8))
sns.heatmap(correlation_df, annot=True, cmap='coolwarm')
corrcoef ()
Funktion wird für die Korrelationsmatrix verwendet, aber die Korrelation zwischen Variablen wird berechnet, indem die Zeilen und Spalten der übergebenen Daten mit .T
transponiert werden.#Extrahieren Sie nur 2 Variablen
df_extraction = df[['RM', 'MEDV']]
#Variable X.,setze y
X = np.array(df_extraction['RM'])
y = np.array(df_extraction['MEDV'])
X = X.reshape(len(X), 1) #In 2D konvertieren
y = y.reshape(len(y), 1)
#Datenaufteilung für Training / Test
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) #In 2D konvertieren
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, die die Genauigkeitsrate speichert
train_accuracy = []
test_accuracy = []
for k in range(1,21):
kNR = KNeighborsRegressor(n_neighbors = k) #Instanzgenerierung
kNR.fit(X_train, y_train) #Lernen
train_accuracy.append(kNR.score(X_train, y_train)) #Trainingsgenauigkeitsrate
test_accuracy.append(kNR.score(X_test, y_test)) #Testgenauigkeitsrate
#Konvertieren Sie die richtige Antwortrate in ein Array
training_accuracy = np.array(train_accuracy)
test_accuracy = np.array(test_accuracy)
#Änderungen in der richtigen Antwortrate für Schulungen und Tests
plt.figure(figsize=(6, 4))
plt.plot(range(1,21), train_accuracy, label='Ausbildung')
plt.plot(range(1,21), test_accuracy, label='Prüfung')
plt.xticks(np.arange(0, 21, 1)) #x-Achsenskala
plt.xlabel('k Nummer')
plt.ylabel('Richtige Antwortrate')
plt.title('Übergang der richtigen Antwortrate')
plt.grid()
plt.legend()
#Übergang der Differenz in der richtigen Antwortrate
plt.figure(figsize=(6, 4))
difference = np.abs(train_accuracy - test_accuracy) #Berechnen Sie die Differenz
plt.plot(range(1,21), difference, label='Unterschied')
plt.xticks(np.arange(0, 21, 1)) #x-Achsenskala
plt.xlabel('k Nummer')
plt.ylabel('Unterschied(train - test)')
plt.title('Übergang der Differenz in der richtigen Antwortrate')
plt.grid()
plt.legend()
plt.show()
#Gleichstellungssequenz generieren
t = np.linspace(1, 10, 1000) #Startwert,Endwert,Elementanzahl
#Form in 2D konvertieren
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='Daten')
plt.plot(T, y_, color='navy', lw=1, label='Voraussichtlicher Wert')
plt.legend()
plt.title("weights = '%s'" % (w))
plt.tight_layout()
plt.show()
tight_layout ()
passt die Parameter des Unterplots (Achsenmarkierungen, Achsenbeschriftungen, Titelbereich) automatisch so an, dass das Unterplot genau in den Bereich des Diagramms passt.