発生している問題・エラーメッセージ
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
import linearreg import numpy as np import csv #データ読み込み Xy = [] with open ("winequality-red.csv") as fp: for row in csv.reader(fp, delimiter=";"): Xy.append(row) Xy = np.array(Xy[1:], dtype=np.float64) #訓練用データをとってテスト用データに分割する np.random.seed(0) np.random.shuffle(Xy) train_X = Xy[ :-1000, : -1] train_y = Xy[ :-1000, : -1] test_X = Xy[ :-1000, : -1] test_y = Xy[ :-1000, : -1] #学習させる model = linearreg.LinearRegression() model.fit(train_X, train_y) #テスト用データにモデルを適用 y = model.predict(test_X) print("最初の5つの正解と予測値:") for i in range(5): print("{:1.0f} {:5.3f}".format(test_y[i], y[i])) print() print("RMSE:", np.sqrt(((test_y - y)**2).mean()))
linearreg.pyファイル
Python3
import numpy as np from scipy import linalg class LinearRegression: def __init__(self): self.w_ = None def fit(self, X, t): Xtil = np.c_[np.ones(X.shape[0]), X] A = np.dot(Xtil.T, Xtil) b = np.dot(Xtil.T, t) self.w_ = linalg.solve(A, b) def predict(self, X): if X.ndim == 1: X = X.reshape(1, -1) Xtil = np.c_[np.ones(X.shape[0]), X] 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


まだ回答がついていません
会員登録して回答してみよう