1 00:00:00,420 --> 00:00:03,970 それではGaussian Naive Bayesの 2 00:00:03,970 --> 00:00:05,575 ドキュメントを読んでみましょう。 3 00:00:05,575 --> 00:00:08,100 "sklearn.naive_bayes.GaussianNB"です。 4 00:00:08,100 --> 00:00:11,450 これは探していたアルゴリズムの名前で、 5 00:00:11,450 --> 00:00:15,650 検索した結果sklearnのドキュメントを見つけました。 6 00:00:15,650 --> 00:00:18,410 最初に見るのは、そしてsklearnのドキュメントの素晴らしいところですが 7 00:00:18,410 --> 00:00:22,960 たくさんの使用例が記載されています。 8 00:00:22,960 --> 00:00:25,640 私は実際にコードを書くときは 9 00:00:25,640 --> 00:00:28,550 いつでもまず最初にサンプルコードを探し出して 10 00:00:28,550 --> 00:00:31,030 それから自分のpythonインタプリタで実行し 11 00:00:31,030 --> 00:00:32,549 それらがちゃんと動作するか確認するようにしています。 12 00:00:32,549 --> 00:00:36,110 そしてたいていの場合それはうまく動きます。 13 00:00:36,110 --> 00:00:37,570 さて、ここにとてもシンプルなサンプルがありますね。 14 00:00:37,570 --> 00:00:39,620 ここに何行かありますが、これはとても重要です。 15 00:00:39,620 --> 00:00:41,110 ですから少し着目して 16 00:00:41,110 --> 00:00:45,640 実際にサンプルコードを書いて動くところをお見せしましょう。 17 00:00:45,640 --> 00:00:48,250 コードの意味が理解できると思います。 18 00:00:48,250 --> 00:00:49,180 最初にライブラリをimportします。 19 00:00:49,180 --> 00:00:52,960 ですからここ、この1行はとても重要です。 20 00:00:53,010 --> 00:00:56,650 この上のコードは、学習用のデータを生成しているだけです。 21 00:00:56,650 --> 00:00:58,470 なのでそれほど重要ではありません。 22 00:00:58,470 --> 00:01:01,790 本題はこのimport文から始まります。 23 00:01:01,790 --> 00:01:04,540 pythonプログラミングの経験があれば、import文は知っていますね。 24 00:01:04,540 --> 00:01:08,480 importは外部のライブラリを使うための構文です。 25 00:01:08,480 --> 00:01:12,360 既に存在するプログラムを再作成する無駄を省き、 26 00:01:12,360 --> 00:01:15,470 誰かが作ってくれたコードを使い回すことができます。 27 00:01:15,470 --> 00:01:19,380 ここではsklearn.naive_bayesからGaussianNBライブラリを使います、と宣言しています。 28 00:01:19,380 --> 00:01:20,350 いいですね。 29 00:01:20,350 --> 00:01:22,710 次に私たちがやろうとしていることは 30 00:01:22,710 --> 00:01:24,410 分類器の作成です。 31 00:01:24,410 --> 00:01:27,040 分類器はGaussianNBです。 32 00:01:27,040 --> 00:01:28,790 import文が失敗していると 33 00:01:28,790 --> 00:01:29,840 この行を何かの拍子に書き忘れたりすると 34 00:01:29,840 --> 00:01:32,480 この行でエラーが出ます。 35 00:01:32,480 --> 00:01:35,620 もし実行時にエラーが出て、このファンクションを 36 00:01:35,620 --> 00:01:37,830 認識できませんと言ったメッセージなら 37 00:01:37,830 --> 00:01:40,350 import文にミスがあります。 38 00:01:40,350 --> 00:01:42,510 OK、分類器を作成しました。 39 00:01:42,510 --> 00:01:45,290 これで準備は万端です。 40 00:01:45,290 --> 00:01:48,180 次に私たちがしなくてはいけないのは分類器の"fit"です。 41 00:01:48,180 --> 00:01:51,710 私たちは訓練するという言葉の代わりに"fit"を使います。 42 00:01:51,710 --> 00:01:54,790 つまりここで実際に学習用データを与え 43 00:01:54,790 --> 00:01:57,070 パターンを学習させているのです。 44 00:01:57,070 --> 00:02:00,030 さっき作成した分類器の 45 00:02:00,030 --> 00:02:03,870 fit() ファンクションを実行します。渡す引数は二つです。 46 00:02:03,870 --> 00:02:10,000 引数の X は feature 、そして Y は label です。 47 00:02:10,000 --> 00:02:13,100 "supervised classification"においては共通なのですが 48 00:02:13,100 --> 00:02:15,240 fit() ファンクションを実行し 49 00:02:15,240 --> 00:02:16,760 引数にfeatureと 50 00:02:16,760 --> 00:02:18,480 labelを渡します。 51 00:02:18,490 --> 00:02:22,060 そして最後に、学習させたばかりの分類器に 52 00:02:22,060 --> 00:02:24,300 推定をさせています。 53 00:02:24,300 --> 00:02:26,050 新しいデータを与えてみます。 54 00:02:26,050 --> 00:02:29,320 与えるデータは [-0.8, -1] です。 55 00:02:29,320 --> 00:02:32,880 皆さんはこのデータの label はなんだと思いますか。 56 00:02:32,880 --> 00:02:35,370 つまりどの分類に所属すると思いますか。 57 00:02:35,370 --> 00:02:38,390 分類器は「1」の分類だと推定しました。 58 00:02:38,390 --> 00:02:42,480 では「2」の分類だと推定されるデータを思いつきますか。 59 00:02:42,480 --> 00:02:47,220 もちろん分類器に推定をさせる前には 60 00:02:47,220 --> 00:02:49,060 分類器を fit させておく必要があります。 61 00:02:49,060 --> 00:02:50,700 データに対してfitを行なっている時が、 62 00:02:50,700 --> 00:02:52,130 実際にパターンを学習している部分だからです。 63 00:02:52,130 --> 00:02:55,140 そしてここは学習したパターンを使って推定を行なっている部分です。 64 00:02:55,140 --> 00:02:56,530 というわけで、 65 00:02:56,530 --> 00:02:59,380 このコードの動作について知っておくべきことを説明しました。 66 00:02:59,380 --> 00:03:02,200 これが機械学習の最初のサンプルコードです。