Pythonで最小二乗法
大学の課題で最小二乗法について調べてこいという課題が出た。
そのレポートを書く際に、コーディングしたPythonコード
#!/usr/bin/env python # coding: utf-8 # 最小二乗法によるデータの整理 import csv import math # 読み込むデータファイル csvfile = 'data.csv' n = 0 # 関数の傾き、y軸切片 a, b = 0.0, 0.0 sum_xy, sum_x, sum_y, sum_x2 = 0.0, 0.0, 0.0, 0.0 reader = csv.reader(file(csvfile, 'r')) for row in reader: x, y = float(row[0]), float(row[1]) sum_xy += x * y sum_x += x sum_y += y sum_x2 += math.pow(x, 2) n += 1 a = (n * sum_xy - sum_x * sum_y) / (n * sum_x2 - math.pow(sum_x, 2)) b = (sum_x2 * sum_y - sum_xy * sum_x) / (n * sum_x2 - math.pow(sum_x, 2)) print '傾き = ' , a print 'y軸切片 = ' , b
最小二乗法を理解するのに手助けになり、とても参考になったサイト
http://www12.plala.or.jp/ksp/computPhys/least-square/index.html