0
2

More than 3 years have passed since last update.

データサイエンティスト育成講座 Chapter2 2日目

Posted at

今日はChapter2に関して進めた。
例によって環境はDockerを使用。

主に使用したライブラリは以下の内容

  • Numpy
  • Scipy
  • Pandas
  • Matplotlib

Numpyメモ

基本的には前回まででNumpy自体には触っているが、チョコチョコわからない点が出てきたりしているので都度調べながら進めている

データフレームの計算になると、PandasのDataFrameを使うことが多くなるのかもしれない。そう考えると、Numpyではここの計算であったり、乱数の生成によくお世話になるんじゃないだろうか。

Numpyの乱数生成としては、ここでは

np.random.randn()

を使うことが多いように見える。
randn関数はstandard normalな乱数。つまり正規分布な数値を生成するようだ
randn

乱数の生成としては、randn以外にもいくつかあり、最後の最後にはuniformが出てくることになる。
複数の乱数を生成するときには

np.random.randn(1000)

と書くことで1000個の乱数を作成することができる。この場合、返却値は配列になる

また、順序だった数値を取得するのに

np.arrange(1000)

のような使い方もあった。上記の場合は、1〜1000までの配列を返す。
グラフを描画するときのX軸の値として使用した。

Scipyメモ

行列計算に主に使用した。
行列計算自体をかなり忘れているため、読みながら進めるものの、行列の固有値だとか逆行列だとか、確かにそういうのがあったような気がするなぁ・・・というレベル。
必要に応じてこの辺りは復讐が必要になるんだろう。

方程式の解法として、Newton法というやり方を知った。

from scipy.optimize import newton
newton(sample_function, 0)

というような記述でsample_functionが引数の0だったときの値。
つまりはf(x) = 0 だったときのxを求めてくれるというもの。

例題としては、x**2 + 2*x + 1の式。つまりはf(x)=x^2+2x+1の解をNewton関数に当てはめて答えを求めていた。
ところが、f(x)=2x^2+2x+1をNewton関数に食わせてみるとエラーになった

Failed to converge after 50 iterations, value is 0.6246914113887032

50iterationsやってみたけれどダメだったということらしい。

newton(sample_function2,0,maxiter=1000)

Newton関数は引数としてこのiterationを指定できるようなので、試しに1000回転ほどさせてみたけれど結局はダメだった。
この辺りは、Newton関数自体の特性だとかをちゃんとわかっていないからうまく行かないんだろうけれど、なかなかどうしたものか・・・という気持ちになった。

Pandasメモ

基本的んはふんふんと読んでいった。
複数のDataFrameをRDBのテーブルのように結合する方法としてmerge関数が用意されているが、Chapter場ではオートな結合しかなく、結合条件を手動で指定する方法が見当たらなかった。

これに関しては、公式のReferenceに詳しい例題付きで書かれていた。

pandas.DataFrame.merge

よくよくみてみると、Chapterではpd.merge(data_frame1, data_frame2)というような呼び出し方だが、リファレンスではdata_frame1.merge(data_frame2)という呼び出し方だ。
merge関数の第1引数にはselfがあるので、書き方として双方をサポートしているということなんだろう。

調べるときにどうしても日本語訳として書かれている記事が多くHitしてしまい、そちらを参照したくなる衝動にかられてしまうのだが、公式をしっかりと読むという癖をつけたほうがいいと思うのでまずはそちらに挑戦するようにしていく。
涙を流しながら。

Matplotlibメモ

意味をちゃんと理解しているかどうかは別にして、グラフという形で描画されるものがあると少し嬉しくなるのは疲れてきているせいであろう。

import matplotlib.pyplot as plt
plt.plot(x, y, "o")

という形で描画させるのだが、この"o"部分を適当に変えてみたら、Plotされたものが変わった。"x"ではバツになったのは予想通りだったけれど、例えば"g"とかにしてみると、棒グラフになった。
Referenceをみてみると、gにすることで棒グラフになるのではなく、そもそもデフォルトが棒グラフで、gは色指定が緑という形だった。

matplotlib.puplot.plot

他にもいくつかPlotのMarkersは指定できるようなので、面白がって試してみるといい

おしまい

なんとかChapter2まで終わらせることができた。
覚えればいいだけなので進められるのだが、1Chapter進めるのになかなか時間が取れないのが痛いな。

ここまでが、基本的なPythonとライブラリの使い方となり、次のChapterからは実際の統計学や分析に入っていくことになるので一気に難易度は上がっていくことになるんだろう。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2