Einführung
In diesem Projekt lernst du, wie du den K-Nearest Neighbors (KNN)-Regressionsalgorithmus mit Python implementierst. KNN ist eine weit verbreitete Methode der maschinellen Lernmethode, die normalerweise für Klassifizierungsprobleme verwendet wird. Es kann jedoch auch auf Regressionsaufgaben angewendet werden, bei denen das Ziel ist, einen kontinuierlichen Zielwert vorherzusagen.
🎯 Aufgaben
In diesem Projekt wirst du lernen:
- Wie du den KNN-Regressionsalgorithmus und dessen Arbeitsweise verstehst
- Wie du den KNN-Regressionsalgorithmus in Python implementierst
- Wie du die euklidischen Distanzen zwischen den Testdaten und den Trainingsdaten berechnest
- Wie du die k nächsten Nachbarn identifizierst und ihre Zielwerte abrufst
- Wie du den Mittelwert der Zielwerte der k nächsten Nachbarn berechnest, um die Ausgabe für die Testdaten vorherzusagen
🏆 Errungenschaften
Nach Abschluss dieses Projekts wirst du in der Lage sein:
- Den KNN-Regressionsalgorithmus von Grund auf mit Python zu implementieren
- Die euklidische Distanz als Distanzmaß im KNN-Algorithmus zu verwenden
- Den KNN-Regressionsalgorithmus anwenden, um kontinuierliche Zielwerte vorherzusagen
- Praktische Fähigkeiten bei der Implementierung von maschinellen Lernalgorithmen demonstrieren
Implementiere den KNN-Regressionsalgorithmus
In diesem Schritt lernst du, wie du den K-Nearest Neighbors (KNN)-Regressionsalgorithmus mit Python implementierst. Folge den Schritten unten, um diesen Schritt abzuschließen:
- Öffne die Datei
knn_regression.pyin deinem bevorzugten Code-Editor. - Locate the
knn(train_data, train_labels, test_data, k)function. This function will be the main implementation of the KNN regression algorithm. - Der Parameter
train_dataist die Merkmalsdaten bekannter Proben,train_labelssind die Zielwerte bekannter Proben,test_datasind die Merkmalsdaten einer einzelnen unbekannten Probe undkrepräsentiert die Anzahl der nächsten Nachbarn, die im K-Nearest-Neighbors-Verfahren verwendet werden. - Inside the
knn()function, start by calculating the Euclidean distances between thetest_dataand all the training samples. You can use thenumpy.sqrt()andnumpy.sum()functions to calculate the Euclidean distances.
distances = np.sqrt(np.sum((train_data - test_data) ** 2, axis=1))
- Next, get the indices of the
knearest neighbors by sorting the distances and taking the firstkindices.
nearest_indices = np.argsort(distances)[:k]
- Retrieve the labels of the
knearest neighbors using thenearest_indices.
nearest_labels = train_labels[nearest_indices]
- Calculate the mean of the
knearest neighbor labels to get the predicted target value for the single unknown sampletest_data.
predicted_label = np.mean(nearest_labels)
- Runde das vorhergesagte Label auf maximal 2 Nachkommastellen mit der
round()-Funktion.
predicted_label = round(predicted_label, 2)
- Finally, return the predicted target value for the single unknown sample
test_data.
return predicted_label
- Save the
knn_regression.pyfile.
Teste den KNN-Regressionsalgorithmus
In diesem Schritt wirst du den Implementierungsvorschlag des KNN-Regressionsalgorithmus testen, indem du das bereitgestellte Beispiel ausführst.
Öffne die Datei knn_regression.py in deinem Code-Editor.
Füge die folgenden Testfälle am Ende der Datei hinzu:
if __name__ == "__main__":
train_data = np.array(
[[1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9], [10, 10]]
)
train_labels = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
test_data = np.array([[1.2, 1.3]])
result = knn(train_data, train_labels, test_data, k=3)
print(result)
Führe den folgenden Befehl aus, um das Beispiel auszuführen:
python3 knn_regression.py
Die Ausgabe sollte der vorhergesagte Zielwert für die einzelne unbekannte Probe sein, gerundet auf maximal 2 Nachkommastellen.
2.0
Herzlichen Glückwunsch! Du hast den KNN-Regressionsalgorithmus erfolgreich implementiert und mit dem bereitgestellten Beispiel getestet.
Zusammenfassung
Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Übungen absolvieren, um deine Fähigkeiten zu verbessern.



