Python入門トップページ


目次

  1. データを眺める
  2. モデル1:単回帰分析
  3. モデル2:2次式を加える
  4. モデル3:三次関数を加える
  5. モデル4:sinカーブを加える
  6. モデル5:cosカーブを加える

線形回帰モデル

データを眺める

CSVファイルを開く

データを眺めてみよう.まず,NumPy, PandasMatplotlib ライブラリをインポートする.

ライブラリのインポートimport numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 高解像度ディスプレイ用
from IPython.display import set_matplotlib_formats
# from matplotlib_inline.backend_inline import set_matplotlib_formats # バージョンによってはこちらを有効に
set_matplotlib_formats('retina')

ここで利用するデータは GitHub のリポジトリで公開しているので,プログラムの中で読み込むことができる.あるいは,GitHub のリポジトリ からダウンロードして Python プログラムと同じフォルダに設置してもよい.次の通り,CSV ファイルを GitHub のリポジトリ から直接読み込み,Pandas のデータフレームに格納する.あるいは,ローカルに保存した CSV ファイルを開いても良い.このとき,ファイルの保存場所に注意してCSVファイルへのパスを記述する必要がある.

CSVファイルを読み込むurl = "https://github.com/rinsaka/sample-data-sets/blob/master/lr.csv?raw=true"
df = pd.read_csv(url)
# df = pd.read_csv('lr.csv')

データフレームを表示してみる.「x」列と「y」列の42件のデータである.

データフレームの表示print(df)
      x    y
0   0.1  4.0
1   0.2  4.8
2   0.5  3.0
3   0.9  3.2
4   1.0  2.9
5   1.2  2.3
6   1.5  2.8
7   1.9  3.0
8   2.2  4.0
9   2.3  5.5
10  2.4  4.8
11  2.8  5.0
12  2.9  6.5
13  3.0  4.4
14  3.2  7.2
15  3.9  9.0
16  4.0  8.0
17  4.3  9.8
18  4.4  7.3
19  4.5  9.0
20  4.6  8.0
21  5.1  7.3
22  5.4  7.0
23  5.5  5.9
24  5.8  7.5
25  5.9  6.5
26  6.0  5.8
27  6.1  2.0
28  6.2  5.8
29  6.3  2.2
30  6.4  2.8
31  6.5  1.5
32  6.6  1.4
33  6.8  1.2
34  7.2  1.0
35  7.5  1.2
36  7.8  1.8
37  8.0  1.9
38  8.2  2.0
39  8.5  2.2
40  8.6  2.8
41  8.9  3.0

目次に戻る

NumPy配列に変換する

データフレームを NumPy 配列に変換する.

NumPy配列に変換x_data = df.loc[:, 'x'].values
y_data = df.loc[:, 'y'].values
print(x_data)
print(y_data)
[0.1 0.2 0.5 0.9 1.  1.2 1.5 1.9 2.2 2.3 2.4 2.8 2.9 3.  3.2 3.9 4.  4.3
 4.4 4.5 4.6 5.1 5.4 5.5 5.8 5.9 6.  6.1 6.2 6.3 6.4 6.5 6.6 6.8 7.2 7.5
 7.8 8.  8.2 8.5 8.6 8.9]
[4.  4.8 3.  3.2 2.9 2.3 2.8 3.  4.  5.5 4.8 5.  6.5 4.4 7.2 9.  8.  9.8
 7.3 9.  8.  7.3 7.  5.9 7.5 6.5 5.8 2.  5.8 2.2 2.8 1.5 1.4 1.2 1.  1.2
 1.8 1.9 2.  2.2 2.8 3. ]

念の為,x_data などのデータ型を確認しておく.

データ型の確認print(type(x_data))
print(type(y_data))
<class 'numpy.ndarray'>
<class 'numpy.ndarray'>

目次に戻る

散布図を作成する

散布図を作成してみよう.

散布図の作成fig, ax = plt.subplots(1, 1, figsize=(6, 4))
ax.scatter(x_data, y_data)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_xlim(0,10)
ax.set_ylim(0,10)
# plt.savefig('lr-data.png', dpi=300, facecolor='white')
plt.show()
  lr-data.png

上の散布図をみると,ここで説明したような線形回帰分析では当てはまりは悪そうである.以降では,明らかに当てはまらなそうな線形回帰分析(モデル1)からはじめ,これに 2次式3次式sinカーブcosカーブも加えた線形回帰モデルによる推定を行ってみる.

なお,CSVファイルを読み込んで散布図を作成するまでに最低限必要なコードは次のようになります.

CSVファイルを読み込んで散布図を作成するimport numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 高解像度ディスプレイ用
from IPython.display import set_matplotlib_formats
# from matplotlib_inline.backend_inline import set_matplotlib_formats # バージョンによってはこちらを有効に
set_matplotlib_formats('retina')

# CSVファイルを読み込む
url = "https://github.com/rinsaka/sample-data-sets/blob/master/lr.csv?raw=true"
df = pd.read_csv(url)

# NumPy 配列に変換する.
x_data = df.loc[:, 'x'].values
y_data = df.loc[:, 'y'].values

# 散布図を作成する
fig, ax = plt.subplots(1, 1, figsize=(6, 4))
ax.scatter(x_data, y_data)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_xlim(0,10)
ax.set_ylim(0,10)
# plt.savefig('lr-data.png', dpi=300, facecolor='white')
plt.show()

目次に戻る