Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Реалізація K-NN | Секція
Основи Контрольованого Навчання

bookРеалізація K-NN

KNeighborsClassifier

Реалізація методу k-найближчих сусідів є досить простою. Необхідно лише імпортувати та використати клас KNeighborsClassifier.

Конструктор:

  • KNeighborsClassifier(n_neighbors = 5)
  • n_neighbors – кількість сусідів (k). Значення за замовчуванням — 5;

Методи:

  • fit(X, y) – навчання на тренувальній вибірці;
  • predict(X) – прогнозування класу для X;
  • score(X, y) – повертає точність для набору X, y.

Після імпорту класу та створення об'єкта класу наступним чином:

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

Конструктор:

  • StandardScaler().

Методи:

  • fit(X) – обчислює xˉ\bar{x} та ss для X;
  • transform(X) – повертає XscaledX_{\text{scaled}}, використовуючи xˉ,s\bar{x}, s з .fit();
  • fit_transform(X) – виконує .fit(X), а потім .transform(X).

Вам потрібно обчислювати xˉ\bar x та ss лише на тренувальній вибірці за допомогою .fit() або .fit_transform(). Потім використовуйте .transform() для тестової вибірки, щоб обидві вибірки були масштабовані однаково:

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

Використання різних значень масштабування для тренувальної та тестової вибірок погіршує якість прогнозів.

Приклад

Ми прогнозуємо, чи сподобався людині Star Wars VI на основі її оцінок Епізодів IV та V (з The Movies Dataset). Після навчання ми тестуємо двох користувачів: один оцінив IV/V як 5 та 5, інший — як 4.5 та 4.

123456789101112131415161718192021222324252627
from 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)
copy
question mark

Які з наступних назв класів із scikit-learn використовуються для реалізації класифікатора k-найближчих сусідів та для масштабування ознак під час підготовки даних для k-NN?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 17

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

bookРеалізація K-NN

Свайпніть щоб показати меню

KNeighborsClassifier

Реалізація методу k-найближчих сусідів є досить простою. Необхідно лише імпортувати та використати клас KNeighborsClassifier.

Конструктор:

  • KNeighborsClassifier(n_neighbors = 5)
  • n_neighbors – кількість сусідів (k). Значення за замовчуванням — 5;

Методи:

  • fit(X, y) – навчання на тренувальній вибірці;
  • predict(X) – прогнозування класу для X;
  • score(X, y) – повертає точність для набору X, y.

Після імпорту класу та створення об'єкта класу наступним чином:

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

Конструктор:

  • StandardScaler().

Методи:

  • fit(X) – обчислює xˉ\bar{x} та ss для X;
  • transform(X) – повертає XscaledX_{\text{scaled}}, використовуючи xˉ,s\bar{x}, s з .fit();
  • fit_transform(X) – виконує .fit(X), а потім .transform(X).

Вам потрібно обчислювати xˉ\bar x та ss лише на тренувальній вибірці за допомогою .fit() або .fit_transform(). Потім використовуйте .transform() для тестової вибірки, щоб обидві вибірки були масштабовані однаково:

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

Використання різних значень масштабування для тренувальної та тестової вибірок погіршує якість прогнозів.

Приклад

Ми прогнозуємо, чи сподобався людині Star Wars VI на основі її оцінок Епізодів IV та V (з The Movies Dataset). Після навчання ми тестуємо двох користувачів: один оцінив IV/V як 5 та 5, інший — як 4.5 та 4.

123456789101112131415161718192021222324252627
from 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)
copy
question mark

Які з наступних назв класів із scikit-learn використовуються для реалізації класифікатора k-найближчих сусідів та для масштабування ознак під час підготовки даних для k-NN?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 17
some-alt