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