Выполните подготовку данных и обучите модель kNN — одну с евклидовым расстоянием, другую — с манхэттенским. Оцените качество решения модели метрикой accuracy в обоих случаях.
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import StandardScaler
# импортируйте функцию для оценки качества модели
from sklearn.metrics import accuracy_score
# импортируйте класс для модели классификации kNN
from sklearn.neighbors import KNeighborsClassifier
# создание константы RANDOM_STATE
RANDOM_STATE = 42
# выполняем подготовку данных функцией, все операции в скрытом прекоде
X_train, X_test, y_train, y_test = prepare_data('music_genre_2_classes_balanced_v2_exp.csv')
# создайте и обучите модель kNN на тренировочных данных
# при обучении модель должна использовать 300 ближайших соседей и евклидово расстояние
model = KNeighborsClassifier(n_neighbors=300, metric='euclidean')
model.fit(X_train, y_train)
preds = model.predict(X_test)
# выполните тестирование на тестовой выборке
euclidean_accuracy = accuracy_score(y_test, preds)
# создайте и обучите модель kNN на тренировочных данных
# при обучении модель должна использовать 300 ближайших соседей и манхэттенское расстояние
model = KNeighborsClassifier(n_neighbors=300, metric='cityblock')
model.fit(X_train, y_train)
preds = model.predict(X_test)
# выполните тестирование на тестовой выборке
cityblock_accuracy = accuracy_score(y_test, preds)
# выведите на экран обе метрики
print('Accuracy (euclidean distance) =', euclidean_accuracy)
print('Accuracy (cityblock distance) =', cityblock_accuracy)
Результат
Accuracy (euclidean distance) = 0.7544483985765125
Accuracy (cityblock distance) = 0.7540035587188612