Реалізація k-NN
KNeighborsClassifier
Реалізація методу k-найближчих сусідів є досить простою. Необхідно лише імпортувати та використати клас KNeighborsClassifier.
Після імпорту класу та створення об'єкта класу наступним чином:
# Importing the class
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)
Потрібно передати йому тренувальні дані за допомогою методу .fit():
knn.fit(X_scaled, y)
На цьому все! Тепер можна передбачати нові значення.
y_pred = knn.predict(X_new_scaled)
Масштабування даних
Однак пам'ятайте, що дані мають бути масштабовані. Для цього зазвичай використовується StandardScaler:
Необхідно обчислювати xˉ (середнє значення) та s (стандартне відхилення) на тренувальній вибірці за допомогою методів .fit() або .fit_transform(). Цей крок гарантує, що параметри масштабування отримані саме з тренувальних даних.
Коли у вас є тестова вибірка для прогнозування, потрібно використовувати ті ж xˉ та s для попередньої обробки цих даних за допомогою .transform(). Така послідовність важлива, оскільки забезпечує однакове масштабування тестових даних і тренувальної вибірки, що зберігає коректність прогнозів моделі.
# Importing the class
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
# Calculating x̄ and s and scaling `X_train`
X_train_scaled = scaler.fit_transform(X_train)
# Scaling `X_test` with x̄ and s calculated in the previous line
X_test_scaled = scaler.transform(X_test)
Якщо використовувати різні xˉ та s для тренувальної та тестової вибірок, точність прогнозів, ймовірно, погіршиться.
Приклад
Розглянемо простий приклад, у якому потрібно передбачити, чи сподобається людині фільм «Зоряні війни VI» на основі її оцінок для «Зоряних війн IV» та «Зоряних війн V». Дані взято з The Movies Dataset з додатковою попередньою обробкою. Вважається, що людині подобається «Зоряні війни VI», якщо вона оцінила його більше ніж на 4 (з 5).
Після навчання моделі зробимо прогнози для двох осіб із тестової вибірки. Перша особа оцінила «Зоряні війни IV» та «Зоряні війни V» як 5 і 5 відповідно, а друга — як 4.5 та 4.
123456789101112131415161718192021222324252627from sklearn.neighbors import KNeighborsClassifier from sklearn.preprocessing import StandardScaler import numpy as np import pandas as pd import warnings warnings.filterwarnings('ignore') df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/starwars_binary.csv') # Dropping the target column and leaving only features as `X_train` X_train = df.drop('StarWars6', axis=1) # Storing target column as `y_train`, which contains 1 (liked SW 6) or 0 (didn't like SW 6) y_train = df['StarWars6'] # Test set of two people X_test = np.array([[5, 5], [4.5, 4]]) # Scaling the data scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) # Building a model and predict new instances knn = KNeighborsClassifier(n_neighbors=13).fit(X_train, y_train) y_pred = knn.predict(X_test) print(y_pred)
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 4.17
Реалізація k-NN
Свайпніть щоб показати меню
KNeighborsClassifier
Реалізація методу k-найближчих сусідів є досить простою. Необхідно лише імпортувати та використати клас KNeighborsClassifier.
Після імпорту класу та створення об'єкта класу наступним чином:
# Importing the class
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)
Потрібно передати йому тренувальні дані за допомогою методу .fit():
knn.fit(X_scaled, y)
На цьому все! Тепер можна передбачати нові значення.
y_pred = knn.predict(X_new_scaled)
Масштабування даних
Однак пам'ятайте, що дані мають бути масштабовані. Для цього зазвичай використовується StandardScaler:
Необхідно обчислювати xˉ (середнє значення) та s (стандартне відхилення) на тренувальній вибірці за допомогою методів .fit() або .fit_transform(). Цей крок гарантує, що параметри масштабування отримані саме з тренувальних даних.
Коли у вас є тестова вибірка для прогнозування, потрібно використовувати ті ж xˉ та s для попередньої обробки цих даних за допомогою .transform(). Така послідовність важлива, оскільки забезпечує однакове масштабування тестових даних і тренувальної вибірки, що зберігає коректність прогнозів моделі.
# Importing the class
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
# Calculating x̄ and s and scaling `X_train`
X_train_scaled = scaler.fit_transform(X_train)
# Scaling `X_test` with x̄ and s calculated in the previous line
X_test_scaled = scaler.transform(X_test)
Якщо використовувати різні xˉ та s для тренувальної та тестової вибірок, точність прогнозів, ймовірно, погіршиться.
Приклад
Розглянемо простий приклад, у якому потрібно передбачити, чи сподобається людині фільм «Зоряні війни VI» на основі її оцінок для «Зоряних війн IV» та «Зоряних війн V». Дані взято з The Movies Dataset з додатковою попередньою обробкою. Вважається, що людині подобається «Зоряні війни VI», якщо вона оцінила його більше ніж на 4 (з 5).
Після навчання моделі зробимо прогнози для двох осіб із тестової вибірки. Перша особа оцінила «Зоряні війни IV» та «Зоряні війни V» як 5 і 5 відповідно, а друга — як 4.5 та 4.
123456789101112131415161718192021222324252627from sklearn.neighbors import KNeighborsClassifier from sklearn.preprocessing import StandardScaler import numpy as np import pandas as pd import warnings warnings.filterwarnings('ignore') df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/starwars_binary.csv') # Dropping the target column and leaving only features as `X_train` X_train = df.drop('StarWars6', axis=1) # Storing target column as `y_train`, which contains 1 (liked SW 6) or 0 (didn't like SW 6) y_train = df['StarWars6'] # Test set of two people X_test = np.array([[5, 5], [4.5, 4]]) # Scaling the data scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) # Building a model and predict new instances knn = KNeighborsClassifier(n_neighbors=13).fit(X_train, y_train) y_pred = knn.predict(X_test) print(y_pred)
Дякуємо за ваш відгук!