K-NNの実装
メニューを表示するにはスワイプしてください
KNeighborsClassifier
k-近傍法(k-Nearest Neighbors)の実装は非常に簡単です。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() を使用して計算。
その後、.transform() を テストセット に適用し、両方のセットが同じ方法でスケーリングされるようにする:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
トレーニングとテストで異なるスケーリング値を使用すると、予測精度が低下。
例
エピソード IV および V の評価を用いて、ある人物が スター・ウォーズ VI を楽しむかどうかを予測(データ出典: The Movies Dataset)。
学習後、2人のユーザーをテスト:1人は IV/V を 5 と 5、もう1人は 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)
すべて明確でしたか?
フィードバックありがとうございます!
セクション 1. 章 4
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 1. 章 4