目安:この記事は2分で読めます
『Pythonと統計分析シリーズ 第1弾』では、ウェルズ・ファーゴ(WFC)とアメリカの長期金利のデータを使って、単回帰分析を実践しました。
その際、Pythonで計算する際によく用いられるモジュール『NumPy』を使って回帰分析のチャートを作りました。
単回帰分析は、あるひとつの変数(データ)ともうひとつの変数(データ)との間にある影響を『直線の関係』で分析します。
Pythonと統計分析シリーズ 第1弾で描画したチャート
しかし、世の中には直線の関係で表すことが出来ない変数がたくさんあります。
そういった変数を分析する時は、直線ではない『非線形』で考える必要があります。
そこで今回は、Numpyを使って『非線形』のラインをチャート上に描画する方法をお話します。
今回の記事は『Pythonと統計分析シリーズ 第1弾』の補講の位置づけですが、同時に昨今流行りの『機械学習』にも深く関わってきます。
興味のある方はぜひ最後までご覧ください。
今回のテーマ
NumPyを使って『非線形』のチャートを描いてみよう!
▼ Pythonを効率的に学ぶなら ▼
Pythonを学ぼう
▼ Udemyおすすめの講座 ▼
▶現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル
▶ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門
この記事の対象となる人
こんな人におすすめ
- Pythonに興味がある人
- Pythonを学びたいと思っている人
- Pythonを使って株価の分析をしたい人
この記事でわかること
わかること
- NumPyでチャートを簡単に描画する方法
NumPyを使えば簡単にチャートが作れる
NumPyって何?
NumPyとは
- Pythonで複雑な計算をする時に使うモジュールです
- NumPyを使えばどんな複雑な計算も高速でやってくれます
- NumPyの知識とスキルは統計的な分析や機械学習の分野では必須です
- NumPyはチャートを描画する時にもよく使われます
上のことをまとめて言うと、『機械学習などの高度な分析をする時によく使われるモジュール』ということです。
NumPyで線形チャートを作成
前置きはこれくらにして、NumPyでチャートを作成するコードを見てみましょう。
まずは、『Pythonと統計分析シリーズ 第1弾』で描画した線形チャートのコードから紹介します。
コード一覧
import numpy as np import matplotlib.pyplot as plt import seaborn as sns sns.set_style('whitegrid') x = np.linspace(start = -10, stop = 10, num = 100) y = x**3 + 10*x**2 f1 = np.polyfit(x,y,1) y1 = np.poly1d(f1)(x) plt.scatter(x,y) plt.plot(x, (y1), color='red')
解説:NumPyとライブラリのインポート
コードの解説です。
▶1行目
今回の主役『NumPy』をインポート
▶2行目
チャートを描画するためのライブラリ『matplotlib』をインポート。
”matplotlib.pyplot as plt” は定型文みたいなものです。
ジェイはいつもこのスタイルです。
▶3~4行目
matplotilbを装飾するためのライブラリ『seaborn』をインポート。
"sns.set_style('whitegrid')" は、"バックは白でグリッドラインを表示して" という意味のコードです。
こちらも定型文です。
解説:NumPyでデータを作成
▶6行目
xという変数に等差数列を生成するコードです。
『numpy.linspace()』とし、カッコの中に(start :最初の値、stop:最後の値、num:要素数)の順で数字を入力します。
そうすると以下のチャートが出来上がります。
xチャート
▶7行目
yという変数に3次関数を設定するコードです。
今回は、先ほど作ったxデータを3次関数にして設定しています。
yチャート
解説:polyfitで近似式を設定
▶9行目
『np.polyfit()』で近似式の設定をします。
カッコの中に(x, y, 次数)の順で設定します。
次数の数で線のかたちが決まります。
今回は線形(直線)を描くため次数は1としました。
設定したら変数にいれます。
今回は "f1" としました。
▶10行目
『poly1d(f1)(x)』と書くことで近似式を計算します。
"1d" が1次近似という意味です。
解説:チャートの描画
▶12行目
『scatter(x,y)』と書くことで、x軸=xのデータ、y軸=yのデータを入力して、スキャッタープロットのチャートが作成できます。
▶13行目
『plot(x, (y1), color=color='red'は'red')』と書くことで、スキャッタープロットチャートに、polyfitで作成した近似式の線を重ねて描画することができます。
" (y1)" となっていることに注意しましょう。
最後の "color='red'" は、"回帰直線のラインを赤にして" という意味です。
ひと目見てわかるとおり、データの動きと回帰直線がマッチしていないことがわかります。
なのでデータの動きに合わせて、線のカタチも変える必要があります。
NumPyで非線形チャートを作成
ここからは、データの動きに沿った非線形の回帰線を描いてみます。
polyfitの次数を変えるだけで、以下のチャートが作成できます。
コード一覧
f2 = np.polyfit(x,y,2) y2 = np.poly1d(f2)(x) plt.scatter(x,y) plt.plot(x, y2, color='limegreen')
コードの解説
上のコードは、2次近似を描くコードです。
▶1行目
『np.polyfit()』の次数を2に変更しただけです。
すると以下の回帰線が描画されます。
非線形チャート
前のチャートよりは、データの動きによりマッチするラインを描くことができました。
さらにデータの動きにマッチさせるため、最後に3次近似のチャートを作成してみましょう。
コードの一覧
f3 = np.polyfit(x,y,3) y3 = np.poly1d(f3)(x)
コードの解説
▶1行目
『np.polyfit()』の次数を3に変更しただけです。
すると以下の回帰線が描画されます。
非線形チャート
すべてのチャートを重ねて表示
最後にすべてのコードをまとめて、チャートを描画してみましょう。
コードの一覧
import numpy as np import matplotlib.pyplot as plt import seaborn as sns sns.set_style('whitegrid') x = np.linspace(start = -10, stop = 10, num = 10) y = x**3 + 10*x**2 plt.scatter(x,y) plt.plot(x, (y1), color='red') plt.plot(x, y2, color='limegreen') plt.plot(x, y3, color='orange');
チャート
このようにNumPyを使えば、数学の計算(今回は等差数列の計算)もチャートの描画も簡単にできます。
NumPyは、統計学や機械学習の分析では必須のスキルです。
Pythonを学びたい!Pythonを使った分析がしてみたい!という方は、『Pythonを学びたい方へ』をご覧ください。
Pythonを学びたい方へ
今やPythonは、あらゆる分野で使われているプログラミング言語です。
Pythonを学んでおけば株式の投資に役立つだけでなく、これからのキャリアを形成する上でも力強い武器となるでしょう。
『私もPythonを学んでみたい!』
という人は以下のリンク先をご覧ください。
▼ Pythonを効率的に学ぶ方法を知りたいなら以下をクリック ▼
Pythonを学ぼう
なぜプログラミングを学ぶ必要があるのか?その理由がわかります。
そして、『これがPythonを効率的に学ぶ方法だ!』と自信をもっておすすめする学習方法について解説しています。
この記事と出会ったのも何かの縁です。
ぜひチャレンジしてみてください!
独学がどうしても苦手な人はメンター制度が充実しているプログラミングスクールをおすすめします。
▼Pythonを学ぶならテックアカデミー▼
▶現役エンジニアのパーソナルメンターからマンツーマンで学べる
▶データサイエンスコース
▲独学が苦手な人におすすめ▲
まとめ
1:NumPyは数学の計算をする時に必ず使う便利なモジュール
2:NumPyを使えば線形や非線形のチャートが簡単に作れる
3:NumPyは統計や機械学習の分析では必須のスキル
注記事項
当サイトのコンテンツを参考に投資を行い、その後発生したいかなる結果についても、当サイト並びにブログ運営者は一切責任を負いません。すべての投資行動は『自己責任の原則』のもとで行ってください。