2学期 プログラミング・機械学習
2学期はプログラミングの基本文法と機械学習の中の『数値分類』を行いました。『数値分類』では3種類のアヤメのデータをプログラムに学習させ,まだ学習を行っていないデータに対して,3種類のアヤメのうちどのデータなのか判定するプログラムを実行しました。また,発展課題として,野球の球種分類のプログラムへの書き換えを行いました。
<発展課題①:分類アルゴリズムの変更> サポートベクタマシン ⇒ k-近傍法
課題研究へ発展させることを考え,分類のアルゴリズムの変更を課題としました。サポートベクタマシンをk-近傍法へ書き換えるためには何行目を変更すればよいかという課題です。この課題の狙いは,アルゴリズムを変更することができることを知ること。課題研究での分類を行う場合に複数のアルゴリズムを比較できるようになることを狙いとしています。
<発展課題②:データの変更> アヤメのデータ ⇒ 野球の球種
授業で行ったアヤメのデータを基に,課題研究で自ら収集するデータを利用するためにデータを変更した場合,どのようにプログラムをどのように書き換えれば利用できるのかを課題とした。データは,田中将大投手の「フォーシーム」・「シンカー」・「スプリッター」の投球データを利用。
(データ出典:BrooksBaseball.net)
本校の野球部がサイバーメトリクスに力を入れているため,これを機に研究したいと思ってくれる生徒が出ることを期待しています。
<アヤメの品種分類プログラムの作成>
今回は,分類のアルゴリズム(※)にSVC(非線形も分類できるサポートベクタマシン)というモデルを利用しました。入力して,正答率の結果が出ると「なにこれ?合ってるの????」という声が上がっていました。初めて動かす機械学習のプログラムにこれで完成しているのか判断がつかず,戸惑っているようでした。そこで,学習していないデータを与えたときに品種名を結果として返すプログラムを追加し実行を行いました。実行結果に「setosa」と表示されると,データから品種分類できていることが実感できたようでした。(※アルゴリズム…問題を解決するための処理手順のこと。)
プログラムを入力 課題に取り組む様子
※実行環境の変更について
令和2年度は『Jupyter Notebook』をプログラムの実行環境として行っていましたが,エディタを『Spyder』に戻しました。ネットワークドライブへのパスの指定が行えない,実行に時間がかかる,実行がうまくいかないなどの実習する上でプログラム自体のエラー以外で時間を取られることが多かったためです。『Jupyter Notebook』はコードセル内にプログラムを記述するため,過去の実習を振り返ることができたり,pdfファイルに変換することができるので,学習の記録に適しているのではないかと採用したのですが,現在の実習環境とは相性が悪かったです。
『Spyder』はエラー箇所が生徒にもわかりやすく,ネットワークドライブで個人フォルダを管理している場合でも,ファイルの保存にも苦労することが少ないかと思います。
<データセットのダウンロードと情報の視覚化>
「fisher」のアヤメデータのダウンロードから行いました。ブラウザで「The iris dataset github」と入力し,検索をかけると出てきます。このデータには,「setosa」,「versicolor」,「virginica」という3種類のアヤメの花びらの長さと幅,がく片の長さと幅の4つの特徴量がそれぞれ50個入っています。
ダウンロードしたテキストファイルをプログラムで使用するCSVファイルにして保存しました。
また,ダウンロードしたデータから,特徴量を組み合わせて散布図にすることで,どんな分布なのか,分類できそうなのかを可視化して確認をしました。特徴量の組合せによる分布の違いに,「全然違う!」という声があがっていました。また,直線を引いて分類できそうか問いかけると,同じ特徴量の組合せでも人それぞれ直線の引き方に違いがあり,どのように分類する基準を決めるのかに興味を持ったようでした。
Excelでのプロット方法を確認 自らデータを組み合わせてプロット
<プログラムの実行と基本文法>
1学期に学習したアルゴリズムの基本構造をプログラムで実行するところから始めました。初めてのプログラミングに悪戦苦闘しています。エラーメッセージを見ては,どこが間違っているのか懸命にプログラムの修正(デバッグ)を行っていました。
教えあいながら理解を深めていきます
数学科の先生からのアドバイス プログラムを入力している様子
情報は全ての授業を情報科教員と数学科教員の2名(TeamTeaching)で行うため,実習中のつまづきにも個別に対応しています。
<プログラムの実行環境について>
プログラムの開発環境の準備には『Anaconda』をインストールしました。昨年度は実行環境(エディタ)に『Spyder』を使用しましたが,今年度は『Jupyter Notebook』を利用しています。生徒にとって利用しやすく,教員にとって指導しやすい実行環境はどのような環境なのか模索しています。
<Pythonでのプログラミングについて>
本校では,これまでVBAでのプログラミングを長年行ってきましたが,昨年度からPythonに変更しました(昨年度はSS情報統計2年生で実施)。Pythonは書きやすく,読みやすい言語であり,ライブラリの活用により複雑な課題に対しても容易にプログラムを記述することができるという特徴があるからです。理数DSでは,Pythonで人工知能の基礎技術である機械学習に取り組んでいきます。生徒達が機械学習を利用した問題解決に興味・関心が持てるよう取り組んでいきたいと考えています。