Menu
CoddyTech

振り返り:ワインの近傍法

CoddyのMachine Learningジャーニー「教師あり学習」セクションの一部。レッスン 10/58。

challenge icon

チャレンジ

簡単

この章の最初のマップと同じように、ワインのマップを描きましょう。スターターコードでは、178種類のワイン(2つの特徴、品種は0から2)を分割し、ksを用意して、グラフにラベルを付けています。

  1. 両方のデータセットをスケーリングし、ワインの訓練データで学習させます。
  2. テスト精度が最も高いkを出力します(ひとまず、より公平な判定方法は第7章で扱います)。
  3. そのkを使ってマップを塗りつぶします。xxとyyのグリッドは100×100で、両軸とも-3から3までとし、予測結果をzzに入れます。
  4. スケーリングした訓練データのワインをその上に散布図として重ね、namesからラベルを付けます。凡例も追加します。

アルコールとフラボノイドを使った場合:

Best k: 13 (test accuracy 0.956)

アルコールとフラボノイドをそれぞれスケーリングしたワインのマップ。左側はオレンジ色、右上は青色、下部は緑色の領域で、各クラスの訓練データのワインが重ねて表示され、凡例も付いている

Coddyがマップについて説明します。

自分で試してみよう

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler

# 3つの栽培品種からなる178種類のワイン、クラスは0、1、2
wine = load_wine()
# 列6と12: flavanoidsとプロリン
X = wine.data[:, [6, 12]]
y = wine.target
names = ["cultivar A", "cultivar B", "cultivar C"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
ks = range(1, 32, 2)  # k = 1, 3, 5, ..., 31

fig, ax = plt.subplots()
ax.set_title("Wine Neighbors")
ax.set_xlabel("flavanoids (scaled)")
ax.set_ylabel("proline (scaled)")

# 以下にコードを書いてください

教師あり学習のすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ