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

bookРеалізація 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ˉ\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. Розділ 4

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Suggested prompts:

Can you explain why scaling is important for k-Nearest Neighbors?

What does the output of the prediction mean in this example?

How do I choose the best value for n_neighbors in KNeighborsClassifier?

Awesome!

Completion rate improved to 4.17

bookРеалізація 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ˉ\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. Розділ 4
some-alt