ちびちび進めてきた松尾研「データサイエンティスト育成講座」の第2章も今日で終わり。最後はMatplotlibに関する練習問題です。
2.1.4 Matplotlibの基礎
<練習問題 1>
y = 5x + 3 (xは-10から10の値)のグラフを書いてみましょう。
<練習問題 1の答え>
import matplotlib.pyplot as plt import numpy as np %matplotlib inline #JupyterNotebook用のマジックコマンド x = np.arange(-10,10,1) y = 5 * x + 3 plt.plot(x, y) plt.grid(True)
1次関数のグラフをMatplotlibで描く問題です。調べて解きました。np.arange()をこんなふうに使うのですね。結果は次のとおり。
<練習問題 2>
先ほどのsin関数に加えて、cos関数のグラフも書いてください。
<練習問題 2の答え>
import matplotlib.pyplot as plt import numpy as np %matplotlib inline #JupyterNotebook用のマジックコマンド # 2行1列のグラフの1つ目 plt.subplot(2,1,1) x = np.linspace(-10, 10,100) plt.plot(x, np.cos(x)) # 2行1列のグラフの2つ目 plt.subplot(2,1,2) y = np.linspace(-10, 10,100) plt.plot(y, np.cos(2*y)) plt.grid(True)
教材に載っているsin関数のコードをcos関数に書き換えました。これでいいのでしょうか。まったく自信ないです。なぜなら数学の復習が追いつかず、サインとコサインの違いがよくわからない状態だから……。結果は次のとおりです。
<練習問題 3>
0から1の値をとる一様乱数を1000個、2組発生させて、それぞれのヒストグラムを書いてみましょう。結果はどうなっていますか。また、1000個だけではなく、100個や10000個などでも実施してみましょう。何かわかることはありますか。なお、それぞれのヒストグラムは別のグラフに表示するために、plt.subplotを利用してください。なお、一様乱数とは、ある数から数まで等確率で発生する乱数のことをいい、np.random.uniformを使ってください。
<練習問題 3の答え>
import matplotlib.pyplot as plt import numpy as np import numpy.random as random %matplotlib inline #JupyterNotebook用のマジックコマンド plt.subplot(2,1,1) plt.hist(random.uniform(0.0,1.0,1000)+50, bins=50,range=(20,80)) plt.grid(True) plt.subplot(2,1,2) plt.hist(random.uniform(0.0,1.0,1000)+50, bins=50,range=(20,80)) plt.grid(True)
これもまったく自信なし。乱数の数を書き換えてもあまり変わらないような……? 私がこの問題から得たものは、plt.subplot()やrandom.uniform()などの使い方のみでした。グラフは以下のとおりです。
Matplotlibはデータを可視化するライブラリだけど、可視化の対象となるのは数値データです。ってことは、数学がわからないと「活用できる」ってレベルにはならないのだなあ。は~~~~~~(嘆息)。早く高校数学の勉強を終え、胸を張って問題が解けるようになりたいです。