Windows11 WSL2 Ubuntu Python Ⅱ

相関係数まとめ

ここまで相関係数について説明してきました。
ここからは相関係数のまとめをします。
基準値①と比較値②~⑤を見える化して相関係数とは何なのか考えてみます。
plt.plot(x,y)
plt.plot(x,z0)
plt.plot(x,z1)
plt.plot(x,z2)
plt.plot(x,z3)
plt.show()
とすると何をどう比較しているのか見ることができます。

  • 基準値①と比較値②~⑤
    1. 相関係数 0.9

      基準値①青 と比較値②橙 は振幅が違い、位相もずれています。
      位相ずれのため相関係数は 0.9、正の相関となります。

    2. 相関係数0

      基準値①青 と比較値 ③緑 は振幅は同じ、値もシフトしていませんが π/2 位相ずれがあり、 相関係数は0、相関なしとなります。

    3. 相関係数1

      基準値①青 と比較値④赤 は振幅が違いその上、値もシフトしています。
      でも相関係数は1、正の相関となります。

    4. 相関係数-1

      基準値①青 と比較値⑤紫 は振幅は同じ、値は反転しています。
      こうなると相関係数は -1、負の相関となります。

    相関係数ファイル作成

    ここまで説明してきたスクリプトを相関係数ファイルにまとめます。

    # coding: utf-8
    import numpy as np
    import matplotlib.pyplot as plt
    
    x = np.arange(0, 6.5, 0.2)
    print('x の値')
    print(x)
    y = np.sin(x)
    print('sin(x) の値-基準①')
    print(y)
    # ---比較データ z0,z1,z2,z3 作成---
    
    z0 = 0.5 * np.sin(x - 0.4) # 相関あり
    print('0.5*sin(x-0.4) の値②')
    print(z0)
    
    z1 = np.cos(x) #π/2 位相ずれ、相関なし
    print('cos(x) の値③')
    print(z1)
    
    z2 = 0.5 * np.sin(x) + 1 # 強い正の相関あり
    print('0.5*sin(x)+1 の値④')
    print(z2)
    
    z3 = - np.sin(x) # 負の相関あり
    print('-sin(x) の値⑤')
    print(z3)
    
    z = np.r_[z0,z1,z2,z3].reshape(4,33)
    print('すべての比較値⑥=②+③+④+⑤')
    print(z)
    # -----比較---
    cor = np.corrcoef(y,z0)
    print('①-②比較')
    print(cor)
    print(cor[1,0])
    print('①-③比較')
    cor1 = np.corrcoef(y,z1)[1,0]
    print(cor1)
    print('①-④比較')
    cor2 = np.corrcoef(y,z2)
    print(cor2[1,0])
    print('①-⑤比較')
    cor2 = np.corrcoef(y,z3)
    print(cor2[1,0])
    
    cor4 = np.corrcoef(y,z)
    print('①-⑥比較')
    print(cor4)
    print(cor4[1:, 0])
    print(cor4[0, 1:])
    
    cor41 = cor4[1:, 0]
    cor_max = np.amax(cor41)
    print('相関max=', cor_max)
    c_max_id = np.argmax(cor41)
    print('相関max_ID=', c_max_id)
    
    plt.plot(x,y)
    plt.plot(x,z0)
    plt.plot(x,z1)
    plt.plot(x,z2)
    plt.plot(x,z3)
    plt.show()
    

    上記内容をすべてをコピ-し、Python ファイルを作成します。
    自分の PC Windows で TeraPad 等を使用して作成できたらファイル名を dsc-sou.py として保存します。
    文字コ-ドは、UTF-8N
    BOM なし
    改行コ-ドは、LF
    です。
    保存先はホスト Wimdows OS の
    Linux \Ubuntu-22.04 \\wsl.localhost フォルダ
    Linux/Ubuntu-22.04/home/yamada/public_html/dsc-sou.py
    とします。

    相関係数ファイル動作確認

    yamada@yama:~$ conda activate
    として conda 環境を有効にします。
    dsc-sou.py ファイルを実行します。
    (base) yamada@yama:~$ python3 public_html/dsc-sou.py
    [結果]

    x の値
    [0.  0.2 0.4 0.6 0.8 1.  1.2 1.4 1.6 1.8 2.  2.2 2.4 2.6 2.8 3.  3.2 3.4
     3.6 3.8 4.  4.2 4.4 4.6 4.8 5.  5.2 5.4 5.6 5.8 6.  6.2 6.4]
    sin(x) の値-基準①
    [ 0.          0.19866933  0.38941834  0.56464247  0.71735609  0.84147098
      ・・・・・・・・    ・・・・・・・・    ・・・・・・・・    ・・・・・・・・    ・・・・・・・・    ・・・・・・・・
     -0.99616461 -0.95892427 -0.88345466 -0.77276449 -0.63126664 -0.46460218
     -0.2794155  -0.0830894   0.1165492 ]
    0.5*sin(x-0.4) の値②
    [-0.19470917 -0.09933467  0.          0.09933467  0.19470917  0.28232124
      ・・・・・・・・    ・・・・・・・・    ・・・・・・・・    ・・・・・・・・    ・・・・・・・・    ・・・・・・・・
     -0.47580104 -0.4968455  -0.4980823  -0.47946214 -0.44172733 -0.38638224
     -0.31563332 -0.23230109 -0.13970775]
    cos(x) の値③
    [ 1.          0.98006658  0.92106099  0.82533561  0.69670671  0.54030231
      ・・・・・・・・    ・・・・・・・・    ・・・・・・・・    ・・・・・・・・    ・・・・・・・・    ・・・・・・・・
      0.08749898  0.28366219  0.46851667  0.63469288  0.77556588  0.88551952
      0.96017029  0.9965421   0.99318492]
    0.5*sin(x)+1 の値④
    [1.         1.09933467 1.19470917 1.28232124 1.35867805 1.42073549
      ・・・・・・・・    ・・・・・・・・    ・・・・・・・・    ・・・・・・・・    ・・・・・・・・    ・・・・・・・・
     0.5019177  0.52053786 0.55827267 0.61361776 0.68436668 0.76769891
     0.86029225 0.9584553  1.0582746 ]
    -sin(x) の値⑤
    [-0.         -0.19866933 -0.38941834 -0.56464247 -0.71735609 -0.84147098
      ・・・・・・・・    ・・・・・・・・    ・・・・・・・・    ・・・・・・・・    ・・・・・・・・    ・・・・・・・・
      0.99616461  0.95892427  0.88345466  0.77276449  0.63126664  0.46460218
      0.2794155   0.0830894  -0.1165492 ]
    すべての比較値⑥=②+③+④+⑤
    [[-0.19470917 -0.09933467  0.          0.09933467  0.19470917  0.28232124
      ・・・・・・・・    ・・・・・・・・    ・・・・・・・・    ・・・・・・・・    ・・・・・・・・    ・・・・・・・・
      -0.47580104 -0.4968455  -0.4980823  -0.47946214 -0.44172733 -0.38638224
      -0.31563332 -0.23230109 -0.13970775]
     [ 1.          0.98006658  0.92106099  0.82533561  0.69670671  0.54030231
      ・・・・・・・・    ・・・・・・・・    ・・・・・・・・    ・・・・・・・・    ・・・・・・・・    ・・・・・・・・
       0.08749898  0.28366219  0.46851667  0.63469288  0.77556588  0.88551952
       0.96017029  0.9965421   0.99318492]
     [ 1.          1.09933467  1.19470917  1.28232124  1.35867805  1.42073549
      ・・・・・・・・    ・・・・・・・・    ・・・・・・・・    ・・・・・・・・    ・・・・・・・・    ・・・・・・・・ 
       0.5019177   0.52053786  0.55827267  0.61361776  0.68436668  0.76769891
       0.86029225  0.9584553   1.0582746 ]
     [-0.         -0.19866933 -0.38941834 -0.56464247 -0.71735609 -0.84147098
      ・・・・・・・・    ・・・・・・・・    ・・・・・・・・    ・・・・・・・・    ・・・・・・・・    ・・・・・・・・ 
       0.99616461  0.95892427  0.88345466  0.77276449  0.63126664  0.46460218
       0.2794155   0.0830894  -0.1165492 ]]
    ①-②比較
    [[1.         0.91419696]
     [0.91419696 1.        ]]
    0.9141969565870183
    ①-③比較
    0.005288618477841017
    ①-④比較
    1.0
    ①-⑤比較
    -1.0
    ①-⑥比較
    [[ 1.          0.91419696  0.00528862  1.         -1.        ]
     [ 0.91419696  1.         -0.40042968  0.91419696 -0.91419696]
     [ 0.00528862 -0.40042968  1.          0.00528862 -0.00528862]
     [ 1.          0.91419696  0.00528862  1.         -1.        ]
     [-1.         -0.91419696 -0.00528862 -1.          1.        ]]
    [ 0.91419696  0.00528862  1.         -1.        ]
    [ 0.91419696  0.00528862  1.         -1.        ]
    相関max= 1.0
    相関max_ID= 2
    

    のように表記され、最後にこのページの最初に示した相関係数グラフが表示されたら OK です。

    引き続き、scikit-learn をインストールしてデータの標準化をしたいと思います。


  • scikit-learn インストール に進む
  • NumPy を使う に戻る
  • ロ-ソク足表示ファイル作成 に戻る
  • pandas インスト-ル に戻る
  • Windows11 WSL2 Ubuntu Python パッケージ に戻る
  • 70VPS に戻る