• 海外赴任時の車の売却はJCM

お気に入り一覧 お気に入り登録 お気に入り解除

【初めての機械学習】Pythonとscikit-learnを使ってK近傍法を実装

カテゴリ タイ

それでは早速、Pythonとscikit-learnを使ってK近傍法を実装していきます。また、前提状況として、Pythonとそのライブラリーそしてユリのデータがインストールされているものとしています。まだ、実装・インストールを行われていない方は、以下の2つの関連記事を参照して、行ってください。

機械学習・深層学習の第一歩【Python】を実装しよう!

初めての機械学習【ライブラリーとデータの登録】

データをトレーニングデータとテストデータの分離する

機械学習を構築するためには、得られてデータを2つ(場合によっては3つに)に分離して、1つ目のデータで学習を行い、2つの目のデータでその検証を行うのが一般的です。また、学習に使ったデータを検証の目的で再度使用することはできません(検証のために使うデータは新しいデータでなければならない。)ので2つのデータ間での重複は許されません。
それでは、scikit-learnの「train_test_split」を使ってユリのデータを分離しよう。

kNN_01kNN_01

上記のコードによって、「train_test_split」ファンクションをscikit-learnから呼び出し、ユリのデータをシャッフルしたのち、75%をトレーニングデータに残りの25%をテストデータに割り当てて分離します。ここで、トレーニングデータの dataはX_trainに、targetはy_trainに、テストデータのdataはX_testに、テストデータのtargetはy_testに代入されます。ここでXは大文字、yは小文字が使われていることに注意してください。

データの内容を確認する

それでは、train_test_splitで作成したトレーニングデータとテストデータの構造を見てみましょう。

kNN_02kNN_02

上記のコードを実行すると、以下の結果が得られ、トレーニング・テストのdataには4つの要素を持ったデータが、targetには1つの要素を持ったデータが代入されており、トレーニングデータは112個、テストデータは38個作成されており、デフォルトの設定通り、75%と25%に’分けられているのが分かります。

kNN_03kNN_03 K近傍法を実装する

それでは、次にK近傍法の実装を行います。K近傍法の実装を行うということは、K近傍法のアルゴリズムに先ほど作ったトレーシングデータを使って学習させることを意味します。ここでも、scikit-learnにはK近傍法のアルゴリズムやそれを学習させるコマンドがすでに用意されているので、あとはそれらを使って進めていくだけです

それでは、具体的にscikit-learnからK近傍法のあるごリズムを呼び出して、パラメータに1を指定しましょう。このパラメータについては後ほど説明いたします。それでは以下のコードを作成して、実行してください。

kNN_04kNN_04

それでは、呼び出したK近傍法のアルゴリズムをトレーニングデータを使って学習させましょう。以下のコードを作成して、In [22]の後の1行のコードを作成して実行させてください。

kNN_05kNN_05

実行後、 Out[22]以下の結果が出力されれば作業は正常に行われています。

K近傍法を使って結果を予測する

それでは、X_newという新しいデータを作って、このデータはどのtargetつまりユリのどの品種に属するのか、作ったばかりのK近傍法のアルゴリズムに推測させましょう。ここでは、X_newのデータは「5, 2.9, 1, 0.2]つまり、花の花弁とがく片のサイズ(長さと幅)がそれぞれの数値(cm)であることを示しています。つまりこのサイズの花弁とがく片を持つユリがどの品種かを推測するのが、今回のお題です。

kNN_06kNN_06

上記のコードを作成して実行してください。

kNN_07kNN_07

実行後、上記の結果が出力されるはずです。この出力は、新たに作ったX_newのデータの花を持っているユリは「setosa」という品種であるとK近傍法のアルゴリズムが推測していることを意味しています。

K近傍法によって得られた結果の確からしさを検証する

それでは最後にトレーニングデータで学習したK近傍法のアルゴリズムが、テストデータを使った時、どれだけ正しい確率で推測できるかを検証します。

kNN_08kNN_08

上記のコードを作成して実行します。

kNN_09kNN_09

問題なければ、上記のような出力があります。ここで、Test set predictionsはここのテストデータをもとにK近傍法のアルゴリズムが推測したユリの品種を示し、Test set scoreがその正確さを示しています。つまり我々のアルゴリズムは97%の確率で正しい回答を出したことを示しています。

まとめ

いかがでしたでしょうか。かなり駆け足で実装してきたので、内容を理解されていない方もおられるかと思います。詳しい解説については後ほど、オイオイしていく予定にしております。この時点で認識していただきたいことは、ごく初歩的ではありますが、みなさんのコンキュータの中に機械学習のアルゴリズムが1つ実装されて、正常に作動しているといった事実です。本来であれば、かなりの量の作業を行わなければ、初歩的といえども実装することはできません。ひとえにPythonとScikit-Learnのおかげ、こんなに簡単に実装できました。

また、本記事はAndreas C. Muller氏とSarah Guido氏による「Introduction to Machine Learning with Python」を参考にしています。
それでは、最後までお付き合いありがとうございました。それでは、さようなら。

続きを読む

ブログ紹介

みゆきメダカのブログ

https://miyukimedaka.com

20年以上の東南アジアでの海外赴任の経験をもとに、これから海外赴任される方、されている方との有益な情報の共有できればと思っています。

カテゴリ タイ

このブログの最新記事

これで漏れ無し!海外赴任前の準備方法

チャートとチェックリストを使って、
海外赴任前の準備項目を確認しながら情報を収集して準備に備えましょう!

海外赴任準備チェックリストを確認する

書籍版のご案内

海外赴任ガイド 到着から帰国まで

書籍版「海外赴任ガイド」は各種ノウハウや一目で分かりやすい「海外赴任準備チャート」などをコンパクトな一冊にまとめております。海外赴任への不安解消に繋がる道しるべとしてご活用ください。

書籍版の詳細

プログライターの方

海外赴任ブログを登録する

あなたのブログを登録してみましょう!

プログライターの方

海外赴任ガイドのSNS

Twitter アカウントをみる

たいせつにしますプライバシー 10520045