2. Multivariate Analyse in Python 8-2. K Nachbarschaftsmethode [Gewichtungsmethode] [Rückgabemodell]

** Wie wirken sich diese Unterschiede auf die Prognoseergebnisse aus? ** ** ** Der Fall des Klassifizierungsmodells von Last time wird als Beispiel gezeigt.

2_8_2_01.PNG

** Außerdem möchte ich im Fall des Regressionsmodells vergleichen. ** ** **

⑴ Bibliothek importieren

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

1. Bereiten Sie die Daten vor

⑵ Datenerfassung und Organisation

#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)

2_8_2_02.PNG

(3) Untersuchung der Analyseachse durch Korrelationsmatrix

#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')

2_8_2_03.PNG

⑷ Datenextraktion und -aufteilung

#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)

2. Untersuchung des k-Parameters

⑸ Führen Sie k-NR aus, während Sie den k-Parameter ändern

#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)

⑹ Wählen Sie den optimalen k-Parameter

#Ä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()

2_8_2_05.PNG

3. Modellausführung und -bewertung

⑺ Erstellen Sie Dummy-Daten

#Gleichstellungssequenz generieren
t = np.linspace(1, 10, 1000) #Startwert,Endwert,Elementanzahl

#Form in 2D konvertieren
T = t.reshape(1000, 1)

⑻ Ausführung und Visualisierung des Regressionsmodells

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()

2_8_2_06.PNG

Recommended Posts

2. Multivariate Analyse in Python 8-2. K Nachbarschaftsmethode [Gewichtungsmethode] [Rückgabemodell]
2. Multivariate Analyse in Python 8-1. K Nachbarschaftsmethode (Scikit-Learn)
2. Multivariate Analyse in Python 8-3. K Nachbarschaftsmethode [Schnittstellenüberprüfung]
2. Multivariate Analyse in Python 1-1. Einfache Regressionsanalyse (Scikit-Learn)
2. Multivariate Analyse in Python 7-3. Entscheidungsbaum [Rückgabebaum]
2. Multivariate Analyse in Python 2-1. Multiple Regressionsanalyse (Scikit-Learn)
2. Multivariate Analyse in Python 1-2. Einfache Regressionsanalyse (Algorithmus)
2. Multivariate Analyse in Python 5-3. Logistische Regressionsanalyse (Statistikmodelle)
2. Multivariate Analyse in Python 6-2. Ridge-Regression / Lasso-Regression (Scikit-Learn) [Ridge-Regression vs. Lasso-Regression]
2. Multivariate Analyse in Python 2-3. Multiple Regressionsanalyse [COVID-19-Infektionsrate]
2. Multivariate Analyse in Python 6-1. Ridge-Regression / Lasso-Regression (Scikit-Learn) [multiple Regression vs. Ridge-Regression]
2. Multivariate Analyse in Python 3-2. Hauptkomponentenanalyse (Algorithmus)
2. Multivariate Analyse in Python 3-1. Hauptkomponentenanalyse (Scikit-Learn)
2. Multivariate Analyse in Python 6-3. Ridge-Regression / Lasso-Regression (Scikit-Learn) [Funktionsweise der Regularisierung]
2. Multivariate Analyse in Python 7-2. Entscheidungsbaum [Unterschied in den Teilungskriterien]
Regressionsanalyse mit Python
Implementierte k-Neighborhood-Methode in Python von Scikit Learn
Erste einfache Regressionsanalyse in Python
[Python] [scikit-learn] k-Einführung in das Memo der Methode des nächsten Nachbarn
Methode der Regressionsanalyse
Simplex-Methode (Einzelmethode) in Python
Private Methode in Python
Assoziationsanalyse in Python
[Maschinelles Lernen] Schreiben Sie die Methode des nächsten Nachbarn in Python selbst und erkennen Sie handgeschriebene Zahlen.
Eine einfache Python-Implementierung der k-Neighborhood-Methode (k-NN)
Mehrfacher Regressionsausdruck in Python
Visualisieren Sie das Keras-Modell mit Python 3.5
K Nachbarschaftsmethode (Mehrklassenklassifikation)
Online lineare Regression in Python
Das Unterdrücken von Methodenüberschreibungen in Python
[SIR-Modellanalyse] Peak out der Infektionszahlen in verschiedenen Teilen Japans ♬
[Python] PCA-Scratch im Beispiel "Einführung in die multivariate Analysemethode"
[Statistischer Test 2. Klasse / quasi 1. Klasse] Regressives Analysetraining mit Python (2)
[Statistischer Test 2. Klasse / quasi 1. Klasse] Regressives Analysetraining mit Python (1)