【データサイエンティスト養成講座】概要・第1回
# python # 入門 # 機械学習
皆さんこんばんは。
Kaggleの問題を解いたから少し時間が経ちましたが、 機械学習の道ではそれはそれは有名な松尾研究室が無料公開している、 「GCIデータサイエンティスト育成講座演習コンテンツ 公開ページ」を進め始めています。
GCIデータサイエンティスト育成講座演習コンテンツとは
松尾研究室のホームページからの引用ですが、以下のようなミッションを持った研究室であり、機械学習やデータサイエンスの分野に非常に長けている研究室となっています。
松尾研究室は、人工知能技術の研究開発・人材育成・社会実装を通じ、社会に変革をもたらすことを使命として、各種の活動を進めています。具体的には、研究開発・人材育成・社会実装の3つの活動の柱を主軸に、「新技術開発」「論文・書籍執筆」「教育」「コミュニティ形成」「共同研究」「ベンチャー創出」の6つのカテゴリの活動をしています。
そんな松尾研究室は、もともとAI人材を排出するために無料の社会人講座を開催していたりと、すでに精力的な人材育成に取り組んでいたのですが、なんと今年2月ころにその教材をオンラインで無料で公開するという暴挙に至りました。 この講座は無料なのですが、なんと無料ながら下記の内容を学習できる本当に太っ腹なコンテンツです。 巷に情報が溢れかえってきている今、無料で筋道立てて学べるコンテンツは非常に少ないため、独学での勉強者にとっては非常にありがたいコンテンツとなっています。
15Chapterを通し、データのセットアップから解析、可視化やモデルのアウトプットまでを一気通貫で学習できます。全体を通じて、データ分析の「流れ」を掴むことを意識した講義設計となっております。
何より初学者にとってありがたいのは、上記リンクにも書いてありますが、プログラミングも基礎の基礎から書いてあることです。 当然全てを最初から理解することは難しいですが、順を追っていけば理解はかなり進むはずです。
またその先?には「Deep Learning基礎講座演習コンテンツ 公開ページ」という講座も存在します。 本当に良い世界になったものだ・・・
ということでこのGCIデータサイエンティスト育成講座の勉強を進めていくこととしました。 筆者にとっては非常に貴重なこの体型だった講座。しっかり勉強していきます。
さて、基本は既に書かれたコードを実行する形で理解を進めるこの講座ですが、毎回?最後に総合問題と言う形でまとめの演習問題が記載されているため、その問題の筆者なりの回答を残していきたいと思います。
ということで早速第1回です。
第1回演習問題(素数判定)
問題概要
1から100までの素数を判定するプログラムを作成する。それを関数化する
考え方
素数の定義
素数(そすう、英: prime number)とは、1 より大きい自然数で、正の約数が 1 と自分自身のみであるもののことである。 正の約数の個数が 2 である自然数と言い換えることもできる。 1 より大きい自然数で素数でないものは合成数と呼ばれる。 https://ja.wikipedia.org/wiki/素数
素数扱うのとか何年ぶりだよとか言うレベルで懐かしかったので、wikipediaで復習。 そうそう、正の約数を1とその数自身の2個ぴったり持つ数だから1は含まれないんだよね。。
判定の考え方
- 以下を考慮しつつ、とにかく割って試して素数判定していく。
- 2〜n-1 の範囲では約数は一つも存在しないため、2〜n-1約数が出たらその数は素数ではないので次に行く。 ※nは判定対象の数
- 約数かどうかの判定を行うのは素数だけでokのため、素数を保持しておく。 (4で割れるなら2でわれる、49で割れるなら7で割れるというような関係があるため)
実際書いたコード
1と2くらいはコード使ってんじゃねえという雑さ加減。だって本質的じゃないんだもん・・・
参考)高速らしい素数判定コード
世の中にはきちんとした数学的背景を持ちつつ判定のアルゴリズムを作ることで、 めちゃくちゃ判定早くすることが出来るらしいです。すごい。
http://szarny.hatenablog.com/entry/2017/09/21/232855
以上です。 飛び抜けたコードにはなりませんでしたが、こういうの考えるのって楽しいなあと思った第1回でした。