注目キーワード

【機械学習】3教科のテスト結果を分類してみた(SVC)➀~設計偏~

こんにちは、Tamagoです。

今回は、「Pythonによる AI・機械学習・深層学習アプリのつくり方」の「2-2 アヤメの分類に挑戦してみよう」のアウトプットとして「SVC」を使ってみました。

ボリュームが多そうなのでこの記事では、以下の4つに触れていきたいと思います。

  • 書籍では、どんなことをやっていたか(アヤメの分類)
  • 応用でやってみたいこと
  • 実装したソースの紹介
  • ソースの動作検証

書籍では、どんなことをやっていたか(アヤメの分類)

書籍では、「アヤメ」という花のがく片や花びらの長さや幅といった特徴からアヤメを分類しています。

情報はCSVでまとめてあり、以下の手順でアヤメの特徴を学習していきます。

  1. CSVファイルのカラムを分割する(特徴とアヤメの種類に分割)
  2. CSVファイルの行を一定の割合で分割(学習用、検証用)
  3. 学習用のデータを使って学習する
  4. 検証用のデータを使って学習した内容が正しいか確かめる
がく片の長さがく片の幅花びらの長さ花びらの幅アヤメの種類
〇〇 〇〇 〇〇 〇〇種類1
△△ △△ △△ △△種類2

応用でやってみたいこと(学習させたいこと)

「国語」、「数学」、「英語」の3教科の合計で五段階の評価をする処理について実装していきたい思います。

評価は単純に合計点を60で割って余りは切り上げるといった感じです。

3教科の合計点評価
241 ~ 3005
181 ~ 2404
120 ~ 1803
61 ~ 1202
0 ~ 601

サンプルソースの紹介

1ファイルで処理すると分かりにくくなると思ったので、「CSV作成処理」と「データの分類」に分けました。

学習用のCSVファイルの作成処理

処理の詳細は「工事中」で説明します。

機械学習で分類する処理

処理の詳細は「工事中」で説明します。

サンプルソースの動作検証

一応正しく動作しているかの検証のために証跡を載せておきます。

学習用のCSVファイルの作成処理の検証

sample_write_test_data_1.py 実行結果

データ行は500行あるので、先頭の数行だけ載せてあります。

こんな感じのデータが出力されるんだなーくらいに思っておいてください。

Japanese,Mathematics,English,Evaluation20,90,20,380,50,60,480,70,70,410,0,80,290,30,50,390,60,60,40,10,80,260,70,40,30,100,20,360,90,100,5

機械学習で分類する処理 の検証

以下の画像はCSVファイルにもともと設定してあった、評価値です。

出力結果の左から「行番号」、「評価値」の順番で出力しています。

なお、検証用のデータはCSVファイルから無作為に抽出されています。

sample_svc.py 実行結果➀

そして、以下の画像では同じテストデータを使って、機械学習で分類した結果となっています。

正解率は9割を超えていて、何回か実行してみましたがだいたい85~100%の正解率でした。

スポンサーリンク

パラメータを変えたり、アルゴリズムを変更すればもう少し精度が上がると思いますが一旦はOKでしょう

sample_svc.py 実行結果②

おわりに

今回は、書籍の「分類」の単元でやっていることの概要説明と、応用編について少し触れていきました。

次回は、もう少し実装したサンプルソースについて詳しく説明していきたいと思います。