学習と予測
CoddyのMachine Learningジャーニー「教師あり学習」セクションの一部。レッスン 3/58。
scikit-learn のすべてのモデルは、2つの呼び出しで動作します。fit はラベル付きの訓練データの行を学習し、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つのステップに従います。
チャレンジ
簡単バードウォッチングクラブのアプリは、翼幅と体重から鳥の名前を判定します。スターターコードでは、クラブの birds.csv を分割し、今夜の鳥を spotted テーブルに読み込みます。
- k近傍法モデルを作成し、訓練用の鳥のデータで学習させます。
- 見つけたすべての鳥を1回の呼び出しで予測します。
- 以下のように、鳥ごとに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})
# 以下にコードを書いてください
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
教師あり学習のすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ