【松尾研データサイエンティスト育成講座】第2章・練習問題を解いてみた:Matplotlib編

ちびちび進めてきた松尾研「データサイエンティスト育成講座」の第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()をこんなふうに使うのですね。結果は次のとおり。
f:id:tekitoeditor:20190713184533p:plain

<練習問題 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関数に書き換えました。これでいいのでしょうか。まったく自信ないです。なぜなら数学の復習が追いつかず、サインとコサインの違いがよくわからない状態だから……。結果は次のとおりです。
f:id:tekitoeditor:20190713184622p:plain

<練習問題 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()などの使い方のみでした。グラフは以下のとおりです。
f:id:tekitoeditor:20190713184649p:plain

Matplotlibはデータを可視化するライブラリだけど、可視化の対象となるのは数値データです。ってことは、数学がわからないと「活用できる」ってレベルにはならないのだなあ。は~~~~~~(嘆息)。早く高校数学の勉強を終え、胸を張って問題が解けるようになりたいです。