Menu
CoddyTech

学習と予測

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

scikit-learn のすべてのモデルは、2つの呼び出しで動作します。fit はラベル付きの訓練データの行を学習し、predict はモデルが一度も見たことのない行にラベルを付けます。

図:6匹のペットの体重と耳の長さを示す X_train と y_train(猫3匹、犬3匹)が fit を通ってモデルに入る。2匹の新しいペット X_new が、モデルを使って predict を通り、猫と犬として出てくる

この学習の最初のレッスンで扱ったモデルはk近傍法です。これは、ある行に最も近い訓練データの行と同じように、その行にラベルを付けます。ペットの体重(kg)と耳の長さ(cm):

from sklearn.neighbors import KNeighborsClassifier

X_train = np.array([[4, 6], [5, 7], [3, 5], [30, 10], [25, 12], [35, 11]])
y_train = np.array(["cat", "cat", "cat", "dog", "dog", "dog"])
model = KNeighborsClassifier()
model.fit(X_train, y_train)
print(model.predict([[6, 6], [28, 11]]))

これは ['cat' 'dog'] を出力します。新しい行はテーブルとして入力し、ペットごとに1行です。

作成、適合、予測:このセクションのすべてのモデルは、この3つのステップに従います。

challenge icon

チャレンジ

簡単

バードウォッチングクラブのアプリは、翼幅と体重から鳥の名前を判定します。スターターコードでは、クラブの birds.csv を分割し、今夜の鳥を spotted テーブルに読み込みます。

  1. k近傍法モデルを作成し、訓練用の鳥のデータで学習させます。
  2. 見つけたすべての鳥を1回の呼び出しで予測します。
  3. 以下のように、鳥ごとに1行を出力します。

別の散歩で3羽見つけた場合:

Bird 1: sparrow
Bird 2: blackbird
Bird 3: robin

自分で試してみよう

import pandas as pd
from sklearn.model_selection import train_test_split

# クラブが名前を付けた鳥1羽につき1行:翼開長はcm、体重はグラム単位
birds = pd.read_csv("birds.csv")
X = birds[["wingspan_cm", "weight_g"]]
y = birds["species"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)

# 今夜の散歩:まず鳥の数、次にそれぞれの翼開長と体重
count = int(input())
spans = []
weights = []
for i in range(count):
    spans.append(float(input()))
    weights.append(float(input()))
spotted = pd.DataFrame({"wingspan_cm": spans, "weight_g": weights})

# 以下にコードを書いてください
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

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

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