import numpy as np import numpy.linalg as nl #線形代数の計算する import pylab #グラフ作成pylabを使うツール from sklearn.metrics import r2_score #データの入力 n = 10 #データ数 x = np.array([0.12, 1.43, 2.23, 2.86, 4.29, 5.71,7.14, 8.57, 9.10, 9.95]) y = np.array([2.35, 2.81, 3.32, 3.84, 4.41, 4.31,5.65, 5.68, 6.21, 6.80]) if ((n!=x.size) or (n != y.size)):print("Error:データ数の不一致") #線形回帰分析 Xsum = np.sum(x) Ysum = np.sum(y) XYsum = np.sum(np.dot(x,y)) X2sum = np.sum(np.dot(x,x)) A = np.array([[n, Xsum], [Xsum, X2sum]]) f = np.array([Ysum, XYsum]) c = nl.solve(A, f) #連立方程式を解く yLR = c[0] + c[1]*x #解析で得られた線形式 #切片と勾配を出力 print('c[0]切片',c[0]) print('c[1]勾配',c[1]) print("R2値=", r2_score(y, yLR)) #作図 pylab.plot(x,y,'o', x,yLR, 'r') pylab.xlabel('x') pylab.ylabel('y') pylab.show()