Menu
CoddyTech

モデルの評価

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

モデルの性能はどうでしょうか?テストデータのうち正しく予測できた行の割合である精度が、それを示します。単純な予測と比べてみましょう:

テスト用ローン50件の精度を示す2本の棒:常に期限どおりと予測した場合は0.78、k-NNモデルは0.88

この図書館の貸出記録の78%は期限どおりに返却されたため、毎回期限どおりに返却されると予測した場合のスコアは0.78です。これがベースラインです。

from sklearn.metrics import accuracy_score

pred = model.predict(X_test)
print(accuracy_score(y_test, pred))
print(model.score(X_test, y_test))
common = y_train.value_counts().index[0]
print((y_test == common).mean())

これは 0.88、0.88、0.78 を出力します。score は1回の呼び出しで予測とカウントを行います。ベースラインは常に、トレーニングデータで最も多いラベルを答えます。

モデルがその価値を示すのは、ベースラインを上回ったときだけです。

challenge icon

チャレンジ

簡単

養蜂家のセンサーはhives.csvに記録された160個の巣箱を監視しています。swarmは各巣箱で分蜂が起きたかどうかを示します。1つのセンサーで予測できるでしょうか?スターターコードはセンサー名を読み取り、そのセンサーだけを使ってモデルを学習します。

  1. テスト精度を小数点以下3桁に丸めて出力してください。
  2. 常に予測するラベル名を示して、ベースラインを出力してください。
  3. モデルがベースラインを上回るかどうかを出力してください。

別の養蜂場でweight_change_kgを使う場合:

Model on weight_change_kg: 0.775
Always "no": 0.7
Beats the baseline: yes

自分で試してみよう

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier

# 巣箱ごとに1行:センサーのデータと、分蜂したかどうか
hives = pd.read_csv("hives.csv")
sensor = input()
X = hives[[sensor]]
y = hives["swarm"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
model = KNeighborsClassifier()
model.fit(X_train, y_train)

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

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

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

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