開発環境
- macOS High Sierra - Apple
- Emacs (Text Editor)
- Python 3.7 (プログラミング言語)
Pythonからはじめる数学入門 (Amit Saha (著)、黒川 利明 (翻訳)、オライリージャパン)の2章(データを統計量で記述する)、3.9(プログラミングチャレンジ)、問題3-1(よりよい相関係数を求めるプログラム)を取り組んでみる。
コード(Emacs)
Python 3
#!/usr/bin/env python3
def find_corr_x_y(x, y):
n = len(x)
if n != len(y):
raise Exception('長さが等しくないので相関は計算できない。')
sum_prod_x_y = sum([xi * yi for xi, yi in zip(x, y)])
sum_x = sum(x)
sum_y = sum(y)
x_square_sum = sum([xi ** 2 for xi in x])
y_square_sum = sum([yi ** 2 for yi in y])
squared_sum_x = sum_x ** 2
squared_sum_y = sum_y ** 2
num = n * sum_prod_x_y - sum_x * sum_y
den_t1 = n * x_square_sum - squared_sum_x
den_t2 = n * y_square_sum - squared_sum_y
den = (den_t1 * den_t2) ** (1/2)
return num / den
if __name__ == '__main__':
x = list(range(10))
y = list(range(9, -1, -1))
for x0, y0 in [(x, x), (x, y), (x + [1], y), (x, y + [1])]:
try:
print(find_corr_x_y(x0, y0))
except Exception as err:
print(err)
入出力結果(Terminal, Jupyter(IPython))
$ ./sample1.py 1.0 -1.0 長さが等しくないので相関は計算できない。 長さが等しくないので相関は計算できない。 $
1 コメント :
You must participate in a contest for probably the greatest blogs on the web. I'll advocate this site! online casino games
コメントを投稿