親です。

子ども産まれたんで育児とかについて書きます。映画とか心理学とかITとかの趣味についても書きます。

【索引】真面目に書いた記事

おつです。真面目に書いた記事をまとめとく。(未来の投稿日時だからトップにくるぞ)

思いました系記事

  1. 16_導入および第一ターニングポイントについて - 親です。
  2. 20_ミュージカル映画2本「アニー」「ピッチパーフェクト」 - 親です。
  3. Mommy - 親です。
  4. コミュニケーションと権力関係について - 親です。
  5. 絶望と責任について - 親です。
  6. 【映画感想】『ROOM』と未評価な地点について - 親です。
  7. クソな夫婦喧嘩を「論点」の概念から考える。 - 親です。
  8. 優しさと責任範囲について - 親です。
  9. ゆらぎ荘の幽奈さん問題ーーセックスとレイプは別物じゃヨ - 親です。
  10. 素直さについての雑記 - 親です。
  11. 幸福学っての、慶應でも流行ってるじゃないすか - 親です。
  12. 小説について最近思うこと - 親です。
  13. 『その後の不自由 「嵐」のあとを生きる人たち』を読んで - 親です。
  14. 嫌なことにも依存はするよな、って話 - 親です。
  15. 馬鹿にされて馬鹿にし返すことについて - 親です。
  16. 親になることと責任について - 親です。
  17. 他者との関係性について、また絶望について。 - 親です。
  18. おそらく俺のモラトリアムが終わった - 親です。

 

技術系記事

  1. 【COBOL】COBOLについての思い出 - 親です。
  2. 【Python】Pythonについてのまとめ記事 - 親です。
  3. 【HTML,CSS,JS】フロント三種分からんからまとめ - 親です。
  4. 【PHP】PHP分かんねえからまとめ - 親です。
  5. 【SQL】SQLわけわからんからまとめ - 親です。

 

 学問系記事

  1. 【心理学】データ分析的な記事まとめ - 親です。
  2. 【数学】高校数学〜機械学習に使われる数学までを復習する - 親です。

 

その他の記事

  1. 【飯のメモ】ホットクックのオリジナルレシピ集 - 親です。
  2. 【英語】Fucking English Study Notes - 親です。
  3. 【キャリア・転職】キャリアについて考えたことまとめ - 親です。

 

これは随時更新する。なんか真面目なお話のネタは10個以上あって、けどあんま記事にするくらいまとまったら書けばいいかなーなんて思ってたら全然書けねえし鮮度も落ちてきてしまいそうだったので、早々に書いてしまうことにする。だいたい全部一年以上前に思いついたことだが、書かないと忘れそう。

【Python】Django - PyCharm使ってDjangoプロジェクトの開始からHerokuデプロイまでの流れ

おつです。先日一日に5回くらいDjangoプロジェクトを作り直すという機会があったので、Djangoプロジェクトを作ってからHerokuデプロイするまでの流れをメモっておきたいと思います。
ちな、PyCharm有償版の機能をガンガン使っていくのでみんな有償版を買おう!!学生なら安くなるはず!

流れざっくり

  1. PyCharmでDjangoPRJ立ち上げ
  2. 設定フォルダの名称をPRJ名から「config」に変更
  3. python manage.py migrateの実施
  4. 色々作る
  5. デプロイのためのファイル作り
  6. git作る - ローカルリポジトリの作成とコミットまで
  7. heroku - アプリの登録
  8. heroku - リモートリポジトリへpush

PyCharmでDjangoPRJ立ち上げ

Pycharm立ち上げるとまずこの画面。 f:id:MaximoNelson49:20180922143027p:plain
新規プロジェクトの作成を選ぶと、プロジェクトのテンプレートを選ぶ画面がでる。 f:id:MaximoNelson49:20180922143016p:plain
ここでDjango用のPRJを開き、PRJ名とApp名を入力する。
すると、こんな感じの構成でPRJフォルダが出来上がる。
f:id:MaximoNelson49:20180922143130p:plain

設定フォルダの名称をPRJ名から「config」に変更

PycharmのDjangoテンプレートが作ってくれたディレクトリ構成で作業を進めてもいいんだが、samplePRJフォルダの中にあるsamplePRJのフォルダを見てほしい。ここは実際設定ファイルなどが格納されている。プロジェクト名と同じだと色々ややこしいので、このフォルダ名をconfigに変えてしまう。
フォルダ名を右クリックからリファクタリングができる。 f:id:MaximoNelson49:20180922143346p:plain
リファクタリングできるんだが、settings.pyの一部だけ変更されない箇所があるのでそこは手で書き換える必要がある。)
f:id:MaximoNelson49:20180922143524p:plain

python manage.py migrateの実施

これも実施。Djangoが提供する機能に関わるDBテーブルの作成をしてくれる。
f:id:MaximoNelson49:20180922143642p:plain
こうすると、 f:id:MaximoNelson49:20180922143652p:plain
こうなる。

色々作る

ここは各自自由に作ってもらう。

デプロイのためのファイル作り

デプロイするに当たって、色々と設定ファイルを作成する必要がある。

  • Procfile
  • runtime.txt
  • 必要なライブラリのインストール(djangjo-toolbelt, whitenoise)
  • requirements.txt
  • settings.pyの修正
  • wsgi.pyの修正
    このページに詳しいのでみなさん読んでくれ。
    qiita.com

git作る - ローカルリポジトリの作成とコミットまで

herokuへはgitを利用してデプロイする。
タイミングとしてはもっと前でもいいけど、とにかくgitをつくる。git initでローカルリポジトリを作成し、git add .git commit -m "コミットメッセージ"までしてしまおう。

heroku - アプリの登録

heroku loginしたのち、heroku create App名でアプリが作れる。

heroku - リモートリポジトリへpush

git push heroku masterでリモートリポジトリへpush。
その後heroku run python manage.py makemigrations App名heroku run python manage.py migrateすることも忘れずに。

こんなもん!!!

【Python】Django - Middlewareでログイン認証を実装する(ために勉強中)

おつです。DjangoのMiddlewareについて学びつつ、basic認証的な認証を実装したいので勉強した内容をまとめます。

勉強の様子

DjangoのMiddlewareとは

簡単にいうとリクエストとかレスポンスに対して一律に処理を加える機能。
この記事が最高に分かりやすかった。 qiita.com

## 認証について

上記の記事を読んで、ログイン認証のやり方について悩んでみた。

という訳でwebの仕組みてきなところで詰まってしまったので、セッションとかそこらへんについて再度学習。
この記事が良さそうだった。

www.slideshare.net

以上!!!

【数学】パーセプトロン完全に理解した

おつです。機械学習における分類手法ひとつ「パーセプトロン法」の勉強をしたので、まとめるよ。

(「やさしく学ぶ 機械学習を理解するための数学のきほん」より)

①分類する とは

機械学習における分類とは、訓練データをもとに対象データがグループAとBのどちらに分類できるかを判定すること。

たとえば、ある長方形が縦長か横長かを分類するケースを考える。 訓練データにはx1, x2, yが与えられている。x1は横の長さ、x2は縦の長さ、yは分類結果で1のとき長方形が横長、-1のとき長方形が縦長であることを表す。 んで、このデータをx1, x2の座標にプロットすると、これらのデータはある直線によって分類できるということが分かる。 これを線形分離可能と呼ぶ。

f:id:MaximoNelson49:20180922102233p:plain
{赤の点が縦長(y=-1)のデータ、青の点が横長(y=1)のデータ。斜めの線で分類できている。)

つまり私たちは分類をするために、この赤点と青点を分類する線を見つけてあげる必要がある。

②「線」の定義

この線について、とりあえず以下のように定義する。

w・x = 0 (式2-1)
(太字はベクトルを表す)

wは重みを意味するベクトルでw1, w2という要素を持つ。 xは、すでに出てきているx1, x2を要素に持つベクトルだ。 いきなりベクトルとか出てきてハァ? って感じだが、2-1の式を開いてあげるとそこそこ理解できる式になる。

w1x1 + w2x2 = 0 (式2-2)

これは馴染みのある一次関数、 y = ax + b とほとんど同じだ。式2-2を同じような感じに変形してやるなら、

x2 = (-w1/w2)x1 + 0 (式2-3)

となる。

以上で、今回見つけたい線が式2-1であるととりあえず納得できたと思う。 で、式2-1について以下みっつのことが言える。

  1. 式2-1はwを法線ベクトルに持つ。
  2. wx = |w|・|x|・cosθ= 0
  3. (2の発展)wx < 0のとき、90°<θ<270°、wx < 0のとき、θ<90°, θ>270°

1は法線ベクトルって単語が新しいけど、言いたいことは単純だ。wxwのなす角は直角ですよ、ということ。 式2-3を見て欲しいんだが、式2-1の傾きは-w1/w2だった。んで、wは〔w1, w2〕だ。 たとえばwが〔1, 2〕のときを考える。  f:id:MaximoNelson49:20180922102247p:plain
(式2-1の傾きは-1/2、wの傾きは2。直角だ。)

そして2も実は同じことを言っている。 |w|・|x|・cosθ= 0 となるときってのはcosθがゼロになるときだ。そしてcosθがゼロになるwxの成す角θは90°もしくは270°である。つまり直角。

最後の3は2の発展。 wxが正の値をとるときってのはcosθが正のとき、つまりθ<90°, θ>270°。 反対に、wxが負の値をとるときはcosθが負の値をとるときで、90°<θ<270°。

このみっつの性質、考えてみれば当たり前すぎて、だからなんやねんという気持ちになるんだが、後々生きる。

③識別関数

xを与えると分類結果を返してくれる関数を下記のように定義する。

fw(x)={ 1 (wx ≧ 0)
-1 (wx < 0) (式3-1)

なんかこれ、いきなりそんなこと言われても全然納得できないと思うんだけど、どういうことかっていうと、下記のイラストの通り。
(細かくなりそうだったので手書き。xベクトルの要素x1, x2と一つ目のxベクトルを表すx1,x2が大変紛らわしくなってしまった。ごめん、文脈で読み取ってほしい、スンマセン)  f:id:MaximoNelson49:20180922102401j:plain
まずw1, w2の座標にwx = 0の直線と法線ベクトルwがある。  f:id:MaximoNelson49:20180922102523j:plain
x1がとwのなす角θがθ<90°, θ>270°のとき、w・x1 > 0である。 w・x1 > 0のとき、x1は分類する線wx = 0より左側にくる。  f:id:MaximoNelson49:20180922102532j:plain
x2がとwのなす角θが90°<θ<270°のとき、w・x2 < 0である。 w・x2 < 0のとき、x1は分類する線wx = 0より右側にくる。  f:id:MaximoNelson49:20180922102623j:plain
そんなわけで、wxが正か負かによって、wx = 0のどちら側にxがくるのか分類できる。

で、この時、右側とか左側とか言ってると数学として扱えなくなるので、冒頭のようにあらわすことにする。

fw(x)={ 1 (wx ≧ 0)
-1 (wx < 0) (式3-1) そゆこと。

④更新式

では実際にxを入れて計算してみる。 (ここはテキストの中身と同じデータを使用してます) 例えば、x=〔125, 30〕、y = 1, のデータがあり、仮にw=〔-1, -1〕とする。 計算すると、xw < 0 となり、fw(x) = -1である。 が、実際のyの値は1であり、分類が失敗している。

分類が失敗したということは、wの値が間違っており、もうちょっとマトモな値に修正可能ということだ。 もうちょっとマトモな値に修正してくれる式のことを更新式と呼び、ここでは下記の通り定義される。

w := { w + y(i)x(i) (fw(x(i)) ≠ y(i))
w (fw(x(i)) = y(i)) (式4-1)

オニクソ読みにくい式になってしまったが、要するに、あるxを与えた時の予測値fw(x)と実測値yが異なるとき、wにyxを加えた値を新しいwとするという意味。x(i)はi番目のxであることを示す。

これをi個全てに繰り返すことで、少しずつより良いwに近くというわけだ。

⑤わかんないところ

予測値と実測値が異なるとき、更新式w + y(i)x(i)がより良いwの値となるってのはなんでなんだろう? なんとなく、分類する線wx = 0の反対側にwが行ってくれる気がするし、まあいい気がするんだけど。。
これ、パーセプトロンの収束定理という名前で証明されているらしい。(調べても難しい記号ばかりでどう読めばいいのかわからなかった。。)

最後に参考書籍の紹介。楽しく読めました。 https://www.amazon.co.jp/%E3%82%84%E3%81%95%E3%81%97%E3%81%8F%E5%AD%A6%E3%81%B6-%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%82%92%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E6%95%B0%E5%AD%A6%E3%81%AE%E3%81%8D%E3%81%BB%E3%82%93-%E3%82%A2%E3%83%A4%E3%83%8E-%E3%83%9F%E3%82%AA%E3%81%A8%E4%B8%80%E7%B7%92%E3%81%AB%E5%AD%A6%E3%81%B6-%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%81%AE%E7%90%86%E8%AB%96%E3%81%A8%E6%95%B0%E5%AD%A6%E3%80%81%E5%AE%9F%E8%A3%85%E3%81%BE%E3%81%A7/dp/4839963525

以上!!!

【Django】Djangoでしくじったミス一覧

しくじったところです。

①初回のmigrateで落ちる

ModuleNotFoundError: No module named 'AppName'

settings.py の ROOT_URLCONF = 'config.urls'の記述が正しいか確認する。settings.pyなどが入っているフォルダ名を変えている場合などにうまくいかなくなる。

【heroku】git revertしたらherokuでrejectされた話

おつです。

タイトルの通り、git revertしたらherokuでrejectされてしまった。

そんな時はherokuのキャッシュを消すと良い。

参考サイト

qiita.com

【データ分析】Pythonを使ってデータをざっと把握する

おつです。これからどんな風にこのデータを分析しようかな〜〜って考えてる時に、目の前のデータの傾向をざっくりと掴む必要がある。データの傾向というと、まあ色々あるけど、①統計量の取得、②分布図の表示、③相関係数の取得についてメモする。

使用するツール

Jupiter notebook
Pythonのpandas, seaborn

①統計量の取得

統計量の取得にはpandasのdf.describe()

②分布図の表示

seaborn.distplot

相関係数の取得

df.corr