発生している問題・エラーメッセージ
TypeError Traceback (most recent call last) <ipython-input-7-648f10542202> in <module> 27 print("最初の5つの正解と予測値:") 28 for i in range(5): ---> 29 print("{:1.0f} {:5.3f}".format(test_y[i], y[i])) 30 print() 31 print("RMSE:", np.sqrt(((test_y - y)**2).mean())) TypeError: unsupported format string passed to numpy.ndarray.__format__
該当のソースコード
Python3
1import linearreg 2import numpy as np 3import csv 4 5#データ読み込み 6Xy = [] 7with open ("winequality-red.csv") as fp: 8 for row in csv.reader(fp, delimiter=";"): 9 Xy.append(row) 10Xy = np.array(Xy[1:], dtype=np.float64) 11 12#訓練用データをとってテスト用データに分割する 13np.random.seed(0) 14np.random.shuffle(Xy) 15train_X = Xy[ :-1000, : -1] 16train_y = Xy[ :-1000, : -1] 17test_X = Xy[ :-1000, : -1] 18test_y = Xy[ :-1000, : -1] 19 20#学習させる 21model = linearreg.LinearRegression() 22model.fit(train_X, train_y) 23 24#テスト用データにモデルを適用 25y = model.predict(test_X) 26 27print("最初の5つの正解と予測値:") 28for i in range(5): 29 print("{:1.0f} {:5.3f}".format(test_y[i], y[i])) 30print() 31print("RMSE:", np.sqrt(((test_y - y)**2).mean()))
linearreg.pyファイル
Python3
1import numpy as np 2from scipy import linalg 3 4class LinearRegression: 5 def __init__(self): 6 self.w_ = None 7 8 def fit(self, X, t): 9 Xtil = np.c_[np.ones(X.shape[0]), X] 10 A = np.dot(Xtil.T, Xtil) 11 b = np.dot(Xtil.T, t) 12 self.w_ = linalg.solve(A, b) 13 14 def predict(self, X): 15 if X.ndim == 1: 16 X = X.reshape(1, -1) 17 Xtil = np.c_[np.ones(X.shape[0]), X] 18 return np.dot(Xtil, self.w_)
###実行したい結果
最初の5つの正解と予測値:
7 6.012
6 5.734
5 5.285
8 6.352
5 5.414
RMSE:0.672424854847
回答2件
あなたの回答
tips
プレビュー