ハンズラボエンジニアブログAWSの話題を中心に、日々の業務やプログラミングの徒然を綴るエンジニアブログです。清水幸佑Pocketこんにちは!新卒の清水です。最近、勉強または趣味でやっていたPyQの機械学習・初級をやり終えたので自分でもやってみました。以前Kaggleのチュートリアルはやったことはありますが、用意されているデータの説明がやはり英語だったのでそれなりにハードルがありました。今回はネットを放浪中にポケモンのcsvデータがあったので、これを使用して行きたいと思います。何をする?個人的にみずタイプのポケモンが好みなのでステータスからみずタイプかどうか判定しようと思います。notebookとりあえずデータをみてみるpandasを使用してcsvデータを読み込みます。pd.read_csv('pokemon_status.csv')df.head(10)df.info()12df.info()ポケモンが909体(メガ進化も含む)なのでどうやら第七世代(サン・ムーン)までのデータのようです。すばやさ)を説明変数X、タイプを目的変数yとして学習させていこうと思います。みずタイプであるのか、そうでないのかで判断したいのでみずタイプのポケモンには1をそうでないものには0を付与します。df['タイプ1'].apply(type_to_num)applyメソッドを使用すると指定した列データ全てに関数を実行してくれます。データをみてみましょう。df.iloc[9:15]12df.iloc[9:15]みずタイプが含まれている行を出してみました。みずタイプには1が振られています。学習させるもちろんscikit-learnを使用して学習させます。今回は目的変数が2値なのでロジスティック回帰で行います。トレーニングデータとテストデータの割合は7:3で分割します。1000としていますがこのCはハイパーパラメータと呼び、Cの値が大きすぎるほど過学習しやすくなり、小さすぎると学習にならない問題があります。1000とパラメータを変えて影響があるか確認し、特に影響がなかったので1000のまま放置してます。y_test)およそ87%の割合で判定することができました。自分一人の力で機械学習をしたのは初めてなのでまぁまぁいいのではないかと思います。判定に失敗した例としてオーダイルをみずタイプではないと判定しました。そんなにポケモンを知らなくても、見れば多くの人はみずタイプだろうと判断するでしょう。オーダイルの進化前のアリゲイツはみずタイプと判定しました改善案としてはステータスの族ごとに学習をさせることで改善することはできると思います。高い精度を求めるならポケモンの画像データを使用するのがいいと思いました(全体的に青っぽいとか)。最後にポケモンの知識がないと難しいところがあるのでやはりデータのリサーチは必要だということを感じました。全体的な機械学習の流れは覚えられてきたのでこれから色々と試していきたいと思います。