今日も Python でドッタンバッタン大騒ぎだヨ！

# わーい！きみは Python が得意になりたいフレンズなんだね！！

<!---
まさかこれが講義資料だとは誰も予想しまい


# 第１回講義（９月２４日）

* <b>Googleアカウントを取得しよう</b>
* <b>Google Colaboratory を使おう。</b> 課題提出は、Google Drive から、指定したメールアドレスに「共有」する。（教員である私のみとの共有になります。教室全体の共有ではありません。）
   * もし Google Colaboratory が使えない人は、ローカルで jupyter notebookを起動。課題提出は Google Drive で共有する。
* <b>Pythonウォーミングアップ</b> で Python 文法の基礎を学ぶ。 
   * https://qiita.com/maskot1977/items/0e01439e4f58fb49a4a7
   * 第１回講義では、これの途中までで終了。授業中の説明は最後まで行きませんでしたが、最後までできた人もいましたし、説明に追いついていない人もいました。
* <b>今日の課題</b>は、ほぼコピペだけなので、出席確認程度の評価になります。そのうち、自分で考えてもらう系の課題を出すことになると思うので、その際には、提出物の中身も評価することになると思います。

# 第２回講義（１０月１日）

* プログラミング環境について
    * Google Colaboratory を使える環境の人は Google Colaboratory を。
    * Google Colaboratory を使えない環境の人は、教室備え付けの Mac で jupyter notebook を起動してください。
        * Mac で「ターミナル」を起動して「jupyter notebook」と入力し「return」
    * 自前のノートパソコンを持っている人は、自前のノートパソコンを使って構いません。むしろ、いつでもどこでもプログラミングできる環境を整えることを推奨します。ただし、独自の環境で生じたエラーについて、私が対応可能とは限りません。

* <b>Pythonウォーミングアップ</b>
    * https://qiita.com/maskot1977/items/0e01439e4f58fb49a4a7
    * 前回最後までできなかった人は、下記の記事をよく読みながら、各自、最後まで実行してください。

* <b>今週の課題</b>
    * <b>【Python演習】線形単回帰・線形重回帰</b>
        * https://qiita.com/maskot1977/items/b8746ae24a2f305209e8
    * もし講義時間中に終了しなかったら、残りは自分で進めてください（友達に相談しながらでOKです。締め切りは来週月曜日いっぱいまで。
    * 課題提出は、Google Drive から、指定したメールアドレスに「共有」する。（教員である私のみとの共有になります。教室全体の共有ではありません。） Google Drive からの共有がもしできなければ、指定したメールアドレスにメールしてください。
    * <b>前回と同じファイルまたはフォルダを「共有」する場合でも、再度「共有」してください。そうしないと、提出してもらったかどうかの確認が困難です。</b>
    * 学籍番号と氏名が分かるようにお願いします。
    * 疑問点・不明点・感想などご意見があれば併記してください。
    
# 第３回講義（１０月８日）

* 参考資料
    * <b>Google Colaboratory のオススメ設定</b>
        * https://qiita.com/maskot1977/items/a1e2cc770f33dc290b2b
    * <b>Google Colaboratoryを便利に使うためのTIPSまとめ</b>
        * https://karaage.hatenadiary.jp/entry/2018/12/17/073000
    * <b>pip install して import するだけで matplotlib を日本語表示対応させる</b>
        * https://qiita.com/uehara1414/items/6286590d2e1ffbf68f6c

* 今週の課題
    * <b>再帰関数と再帰を使わない解法</b>
        * https://qiita.com/maskot1977/items/6dade7f1424dc9fc0f28
    * <b>グラフ理論の基礎</b>
        * https://qiita.com/maskot1977/items/e1819b7a1053eb9f7d61
    * <b>プログラミング問題集（問１〜問５）</b>
        * https://qiita.com/maskot1977/items/85772c1e457c42eea089
            * 問１：和が m になる取り出し方
            * 問２：三角形は作れるか？
            * 問３：部分和問題
            * 問４：迷路の最短経路
            * 問５：できるだけ少ない枚数の硬貨で支払いたい
           
    * <b>課題提出の方針</b>
        * 課題提出は、Google Drive から、指定したメールアドレスに「共有」する。（教員である私のみとの共有になります。教室全体の共有ではありません。） Google Drive からの共有がもしできなければ、指定したメールアドレスにメールしてください。
        * <font color="#ff0000">全部できなくてもOKです。できるところまで。</font>締め切りは来週月曜日いっぱいまで。
        * 同じ問題を解くにも、いろんな解法があり得ます。課題提出の際に、できれば、どういう考え方で解いたのかも併せて説明してください。
        * 前回と同じファイルまたはフォルダを「共有」する場合でも、再度「共有」してください。そうしないと、提出してもらったかどうかの確認が困難です。
        * 学籍番号と氏名が分かるようにお願いします。
        * 疑問点・不明点・感想などご意見があれば併記してください。

# 第４回講義（１０月１５日）

* 参考資料
    * <b>Python 入門</b>
        * https://tutorials.chainer.org/ja/02_Basics_of_Python.html
        * 課題ではありませんが、復習に使ってください。
    * <b>プログラミング問題集 解答例</b>
        * https://github.com/maskot1977/PythonCourse2019/blob/master/README.md
        * 解けた方も、解けなかった方も、目を通してみてください。一字一句を理解する必要はありません。他の人の書いたコードを読んで、どこで何をしようとしているのか読み取ることが、プログラミングの上達につながります。

* 今週の課題
    * 提出期限は <b>１１月３日</b> とします。（第５回講義は休講です。）
    * ひたすらコピペが続きますが、コピペしながら、何を用いて何ができるか学習してください。一字一句を全て理解する必要はありません。ゼロから全て自分でコードを書く必要などありません。自分の目的を達成するためには、どこをコピペして、どこを書き換えれば良いのか学習するのが大切です。
    * 「Matplotlib を用いた可視化」の最後には課題があります。どこから何をコピペして、既存のコードのどこを書き換えれば目的が達せられるかをつかむ練習をしましょう。
    * 他人の書いたコードを読むのはいい練習になります。どの部分で何をしようとしているのか読み取りましょう。
    * <b>NumPy 入門</b>
        * https://tutorials.chainer.org/ja/08_Introduction_to_NumPy.html
    * <b>Pandas を用いた演算</b>
        * https://qiita.com/maskot1977/items/fb36c861aee02ea18755
    * <b>タブ区切りデータ、コンマ区切りデータ等の読み込み</b>
        * https://qiita.com/maskot1977/items/1f6c51965b1bfc341e4b
    * <b>Matplotlib を用いた可視化</b>
        * https://qiita.com/maskot1977/items/520fac964122786ccd50
    * <b>プログラミング問題集（問６〜問１０）</b>
        * https://qiita.com/maskot1977/items/49bf5b1c270a347d34a4
            * 問６：二分法
            * 問７：ニュートン法
            * 問８：約数
            * 問９：素数判定
            * 問10：素因数分解
           


# 第５回講義（１０月２９日）

* 休講

# 第６回講義（１１月５日）

* 参考記事
    * 二分法・ニュートン法・勾配降下法をPythonで理解する
        * https://qiita.com/maskot1977/items/2d409313e52e353e580d
    * おかしな統計学
        * https://twitter.com/search?q=%23おかしな統計学&src=typed_query
        

* 今週の課題
    * <b>分布と検定</b>
        * https://qiita.com/maskot1977/items/776d1dc9c06e61620b53
    * <b>プログラミング問題集（問１１〜問１５）</b>
        * https://qiita.com/maskot1977/items/f5f1308784511ae3d844
            * 問１１：区分求積法（長方形近似）
            * 問１２：区分求積法（台形則）
            * 問１３：区分求積法（シンプソン則）
            * 問１４：エラトステネスの篩
            * 問１５：格子点の個数


# 第７回講義（１１月１２日）

* 今週の課題
    * <b>Sympy を用いた演算</b>
        * https://qiita.com/maskot1977/items/e4eab69b77008ba3530c
    * <b>プログラミング問題集（問１６〜問２０）</b>
        * https://qiita.com/maskot1977/items/93deb9372f0c38ee0677
            * 問１６：連立一次方程式（ガウスの消去法）
            * 問１７：連立一次方程式（ヤコブ法）→すみません、解けませんので問題取り消します
            * 問１８：ナップサック問題
            * 問１９：最長共通部分列
            * 問２０：個数制限なしナップサック問題
           


# 第８回講義（１１月１９日）

* 今週の課題
    * <b>補間やカーブフィッティングなどの最適化</b>
        * https://qiita.com/maskot1977/items/256481012dcbbd41a49f
    * <b>プログラミング問題集（問２１〜問２５）</b>
        * https://qiita.com/maskot1977/items/0525bb0137c4b2da91c7
            * 問２１：オイラー法
            * 問２２：ルンゲ・クッタ法
            * 問２３：最初に基準を超える者
            * 問２４：同じ長さの紐が k 本欲しい
            * 問２５： 最長回路発見
            

# 第９回講義（１１月２６日）

* 参考記事
    * 【Python】ただひたすらにフーリエ変換【備忘録】
        * https://qiita.com/Kuma_T/items/74c149b00428f820b24c
* 今週の課題
    * <b>Scipyで実装しながら学ぶ ロジスティック回帰 と 多層パーセプトロン の基礎</b>
        * https://qiita.com/maskot1977/items/d9715d09edbcc01c6dd5
    * <b>プログラミング問題集（問２６〜問３０）</b>
        * https://qiita.com/maskot1977/items/8ba1fd6e9d0635da34e3
            * 問２６：ラグランジュ補間
            * 問２７：スプライン補間
            * 問２８：多項式近似
            * 問２９：一方通行の街を通り抜ける
            * 問３０：二色で塗り分ける

# 第１０回講義（１２月３日）

* 今週の課題
    * <b>教師あり機械学習（分類・回帰）</b>
        * https://qiita.com/maskot1977/items/c648e398b3b86cb68ae5
    * <b>プログラミング問題集（問３１〜問３５）</b>
        * https://qiita.com/maskot1977/items/e33fe2b2eb2221ab63f8
            * 問３１：１変数の確率的勾配降下法 (stochastic gradient descent, SGD)
            * 問３２：２変数の確率的勾配降下法 (stochastic gradient descent, SGD)
            * 問３３：回転
            * 問３４：正多角形
            * 問３５：芒星図形

# 第１１回講義（１２月１０日）

* 参考記事
    * 多層パーセプトロン (Multilayer perceptron, MLP)をPythonで理解する
        * https://qiita.com/maskot1977/items/d0253e1eab1ff1315dff
    * 線形重回帰、ロジスティック回帰、多層パーセプトロン、オートエンコーダーまでやっChainerヨ！
        * https://qiita.com/maskot1977/items/7ce4bfde28085f0ef27a
    * Pytorchで線形重回帰、ロジスティック回帰、多層パーセプトロン、オートエンコーダーまで
        * https://qiita.com/maskot1977/items/3ed8a593d5877a1fcb51
    * ポケモンデータ解析.py
        * https://qiita.com/maskot1977/items/2680927b58cdc4fad8d4
    * 数量化理論をPythonで理解する
        * https://qiita.com/maskot1977/items/6235aaad28b1ad8f1713
       
* 今週の課題
    * <b>実習用学生アンケート</b>
        * https://docs.google.com/forms/d/e/1FAIpQLSf4yvNCXQRRuhwSxB5KyBDjL6RLbcPyilSKpI6tiUy7Vad2Pg/viewform
        * アンケート結果を、今まで学んだ方法も使ってデータ解析しなさい。この講義で学んだ方法以外の方法を使っても構いません。何か面白いものを見つけてほしいです。締め切りは来週ではなく、年明けの講義の前日にしたいと思います。

    * <b>プログラミング問題集の復習（問１〜問５）</b>
        * https://qiita.com/maskot1977/items/85772c1e457c42eea089
            * 問１：和が m になる取り出し方
            * 問２：三角形は作れるか？
            * 問３：部分和問題
            * 問４：迷路の最短経路
            * 問５：できるだけ少ない枚数の硬貨で支払いたい
    * <b>プログラミング問題集の復習（問6〜問10）</b>
        * https://qiita.com/maskot1977/items/49bf5b1c270a347d34a4
            * 問６：二分法
            * 問７：ニュートン法
            * 問８：約数
            * 問９：素数判定
            * 問10：素因数分解
    * <b>プログラミング問題集の復習（問１１〜問１５）</b>
        * https://qiita.com/maskot1977/items/f5f1308784511ae3d844
            * 問１１：区分求積法（長方形近似）
            * 問１２：区分求積法（台形則）
            * 問１３：区分求積法（シンプソン則）
            * 問１４：エラトステネスの篩
            * 問１５：格子点の個数
    * プログラミング問題集の解答例の残り（問１６〜問３５）は後日できるだけ早めに公開します。プログラミング問題集のうち、解けなかった問題があれば解いて再提出してください。その際には、（解答例はもうお見せしているので）そのプログラムが何をどのように計算しているか解説を加えてください。私が公開した方法以外の方法を調べて使ったり、自作していただいても構いません。質問があったらいつでもメールしてください（申し訳ありませんがレスポンスが遅れる場合があります）。もしバグがあったり、うまく動かないなどの報告があったらそれもしていただけると助かります。こちらも、締め切りは年明けの講義の前日にしたいと思います。

# 第１２回講義（１２月１７日）

* 今週の課題
    * <b>実習用学生アンケート結果のデータ解析</b>
        * https://docs.google.com/forms/d/e/1FAIpQLSf4yvNCXQRRuhwSxB5KyBDjL6RLbcPyilSKpI6tiUy7Vad2Pg/viewform
        * アンケート結果を、今まで学んだ方法も使ってデータ解析しなさい。この講義で学んだ方法以外の方法を使っても構いません。何か面白いものを見つけてほしいです。締め切りは来週ではなく、年明けの講義の前日にしたいと思います。

    * <b>プログラミング問題集の復習（問１６〜問２０）</b>
        * https://qiita.com/maskot1977/items/93deb9372f0c38ee0677
            * 問１６：連立一次方程式（ガウスの消去法）
            * 問１７：連立一次方程式（ヤコブ法）→すみません、解けませんので問題取り消します
            * 問１８：ナップサック問題
            * 問１９：最長共通部分列
            * 問２０：個数制限なしナップサック問題

    * <b>プログラミング問題集の復習（問２１〜問２５）</b>
        * https://qiita.com/maskot1977/items/0525bb0137c4b2da91c7
            * 問２１：オイラー法
            * 問２２：ルンゲ・クッタ法
            * 問２３：最初に基準を超える者
            * 問２４：同じ長さの紐が k 本欲しい
            * 問２５： 最長回路発見
    * <b>プログラミング問題集の復習（問２６〜問３０）</b>
        * https://qiita.com/maskot1977/items/8ba1fd6e9d0635da34e3
            * 問２６：ラグランジュ補間
            * 問２７：スプライン補間
            * 問２８：多項式近似
            * 問２９：一方通行の街を通り抜ける
            * 問３０：二色で塗り分ける
    * <b>プログラミング問題集の復習（問３１〜問３５）</b>
        * https://qiita.com/maskot1977/items/e33fe2b2eb2221ab63f8
            * 問３１：１変数の確率的勾配降下法 (stochastic gradient descent, SGD)
            * 問３２：２変数の確率的勾配降下法 (stochastic gradient descent, SGD)
            * 問３３：回転
            * 問３４：正多角形
            * 問３５：芒星図形


# 第１３回講義（１月７日）

* 最終回です。
    * 試験はありません。出席も取ってません。今まで提出した課題内容で評価します。

* 「データ駆動」とは

* 最後の課題
    * <b>講義アンケート</b> （正式なやつ）
        * 授業終了までに回答して、帰る時に教卓の向かって左のテーブルに置いてってください。
    * <b>プログラミング問題集の復習（問１〜問３５）</b>
        * 自力で解けなかった問題でも、解答例を見ながら、説明してみてください。まだ提出してない人でも、今からでもOKです。
    * <b>データ解析２</b>
        * https://github.com/maskot1977/ipython_notebook/blob/master/toydata/Diabetes-Data.xlsx?raw=true
        * 今まで学んだ方法も使って上のエクセルデータを解析しなさい。この講義で学んだ方法以外の方法を使っても構いません。全てのデータを使う必要はありません。
    * <b>締め切り</b> は来週ではなく、1月20日月曜日21時にしたいと思います。

# アンケート結果解析 解答例

計算の例をこちらに置いておきます。計算結果の解釈については省略します。質問があればメールしてください。

https://colab.research.google.com/drive/1xx_IH5F_BBbSRMqaEMo-0XSRDfnzcWKm

--->