WEBVTT 00:00:00.420 --> 00:00:03.970 それではGaussian Naive Bayesの 00:00:03.970 --> 00:00:05.575 ドキュメントを読んでみましょう。 00:00:05.575 --> 00:00:08.100 "sklearn.naive_bayes.GaussianNB"です。 00:00:08.100 --> 00:00:11.450 これは探していたアルゴリズムの名前で、 00:00:11.450 --> 00:00:15.650 検索した結果sklearnのドキュメントを見つけました。 00:00:15.650 --> 00:00:18.410 最初に見るのは、そしてsklearnのドキュメントの素晴らしいところですが 00:00:18.410 --> 00:00:22.960 たくさんの使用例が記載されています。 00:00:22.960 --> 00:00:25.640 私は実際にコードを書くときは 00:00:25.640 --> 00:00:28.550 いつでもまず最初にサンプルコードを探し出して 00:00:28.550 --> 00:00:31.030 それから自分のpythonインタプリタで実行し 00:00:31.030 --> 00:00:32.549 それらがちゃんと動作するか確認するようにしています。 00:00:32.549 --> 00:00:36.110 そしてたいていの場合それはうまく動きます。 00:00:36.110 --> 00:00:37.570 さて、ここにとてもシンプルなサンプルがありますね。 00:00:37.570 --> 00:00:39.620 ここに何行かありますが、これはとても重要です。 00:00:39.620 --> 00:00:41.110 ですから少し着目して 00:00:41.110 --> 00:00:45.640 実際にサンプルコードを書いて動くところをお見せしましょう。 00:00:45.640 --> 00:00:48.250 コードの意味が理解できると思います。 00:00:48.250 --> 00:00:49.180 最初にライブラリをimportします。 00:00:49.180 --> 00:00:52.960 ですからここ、この1行はとても重要です。 00:00:53.010 --> 00:00:56.650 この上のコードは、学習用のデータを生成しているだけです。 00:00:56.650 --> 00:00:58.470 なのでそれほど重要ではありません。 00:00:58.470 --> 00:01:01.790 本題はこのimport文から始まります。 00:01:01.790 --> 00:01:04.540 pythonプログラミングの経験があれば、import文は知っていますね。 00:01:04.540 --> 00:01:08.480 importは外部のライブラリを使うための構文です。 00:01:08.480 --> 00:01:12.360 既に存在するプログラムを再作成する無駄を省き、 00:01:12.360 --> 00:01:15.470 誰かが作ってくれたコードを使い回すことができます。 00:01:15.470 --> 00:01:19.380 ここではsklearn.naive_bayesからGaussianNBライブラリを使います、と宣言しています。 00:01:19.380 --> 00:01:20.350 いいですね。 00:01:20.350 --> 00:01:22.710 次に私たちがやろうとしていることは 00:01:22.710 --> 00:01:24.410 分類器の作成です。 00:01:24.410 --> 00:01:27.040 分類器はGaussianNBです。 00:01:27.040 --> 00:01:28.790 import文が失敗していると 00:01:28.790 --> 00:01:29.840 この行を何かの拍子に書き忘れたりすると 00:01:29.840 --> 00:01:32.480 この行でエラーが出ます。 00:01:32.480 --> 00:01:35.620 もし実行時にエラーが出て、このファンクションを 00:01:35.620 --> 00:01:37.830 認識できませんと言ったメッセージなら 00:01:37.830 --> 00:01:40.350 import文にミスがあります。 00:01:40.350 --> 00:01:42.510 OK、分類器を作成しました。 00:01:42.510 --> 00:01:45.290 これで準備は万端です。 00:01:45.290 --> 00:01:48.180 次に私たちがしなくてはいけないのは分類器の"fit"です。 00:01:48.180 --> 00:01:51.710 私たちは訓練するという言葉の代わりに"fit"を使います。 00:01:51.710 --> 00:01:54.790 つまりここで実際に学習用データを与え 00:01:54.790 --> 00:01:57.070 パターンを学習させているのです。 00:01:57.070 --> 00:02:00.030 さっき作成した分類器の 00:02:00.030 --> 00:02:03.870 fit() ファンクションを実行します。渡す引数は二つです。 00:02:03.870 --> 00:02:10.000 引数の X は feature 、そして Y は label です。 00:02:10.000 --> 00:02:13.100 "supervised classification"においては共通なのですが 00:02:13.100 --> 00:02:15.240 fit() ファンクションを実行し 00:02:15.240 --> 00:02:16.760 引数にfeatureと 00:02:16.760 --> 00:02:18.480 labelを渡します。 00:02:18.490 --> 00:02:22.060 そして最後に、学習させたばかりの分類器に 00:02:22.060 --> 00:02:24.300 推定をさせています。 00:02:24.300 --> 00:02:26.050 新しいデータを与えてみます。 00:02:26.050 --> 00:02:29.320 与えるデータは [-0.8, -1] です。 00:02:29.320 --> 00:02:32.880 皆さんはこのデータの label はなんだと思いますか。 00:02:32.880 --> 00:02:35.370 つまりどの分類に所属すると思いますか。 00:02:35.370 --> 00:02:38.390 分類器は「1」の分類だと推定しました。 00:02:38.390 --> 00:02:42.480 では「2」の分類だと推定されるデータを思いつきますか。 00:02:42.480 --> 00:02:47.220 もちろん分類器に推定をさせる前には 00:02:47.220 --> 00:02:49.060 分類器を fit させておく必要があります。 00:02:49.060 --> 00:02:50.700 データに対してfitを行なっている時が、 00:02:50.700 --> 00:02:52.130 実際にパターンを学習している部分だからです。 00:02:52.130 --> 00:02:55.140 そしてここは学習したパターンを使って推定を行なっている部分です。 00:02:55.140 --> 00:02:56.530 というわけで、 00:02:56.530 --> 00:02:59.380 このコードの動作について知っておくべきことを説明しました。 00:02:59.380 --> 00:03:02.200 これが機械学習の最初のサンプルコードです。