#前提・実現したい事
北海道の電力需要の機械学習の勉強をしています。
予測結果をScoreからMAPEに変更したいのですがどのようにすればよいでしょう。
#直したい部分
# 予測結果(スコア) Score = 'Score =' + str(model.score(x_test,y_test)) print(Score)
#該当のソースコード
import pandas as pd import numpy as np import matplotlib.pyplot as plt import datetime as dt #日付・時刻を扱うためのライブラリ # 学習用データ(2018年度電力需要)の読み込み filename = "/content/drive/MyDrive/Colab Notebooks/2016-18 .csv" df = pd.read_csv(filename,encoding="SHIFT-JIS") # 欠損データ行を削除 df = df.dropna() # 学習データの説明変数とするデータ列の指定 x = ['Month', 'Week', 'Hour', 'Asa_Temp', 'Hako_Temp', 'Toma_Temp', 'Kushi_Temp', 'Aba_Temp'] # 学習データの目的変数とするデータ列の指定 y = ["Power"] # それぞれの数値型を指定 x = df[x].values.astype('float') y = df[y].values.astype('int').flatten() #学習データを学習用データと検証用データに分割(学習:検証=9:1) from sklearn import model_selection as ms x_train, x_test, y_train, y_test = ms.train_test_split(x, y, test_size=.1, random_state=42) #データの標準化(平均0,分散1) from sklearn.preprocessing import StandardScaler scaler = StandardScaler() scaler.fit(x_train) #標準化に必要な標準偏差,平均値を算出 x_train = scaler.transform(x_train) #標準化 x_test = scaler.transform(x_test) #標準化 #学習(ランダムフォレスト) def RandomF(x_train, x_test): from sklearn.ensemble import RandomForestRegressor model = RandomForestRegressor() model.fit(x_train, y_train) print('Score = ', model.score(x_test, y_test)) return model model = RandomF(x_train, x_test); MLname = 'Random forest model' # 検証用データ(2019年度電力需要)の読み込み filename = "/content/drive/MyDrive/Colab Notebooks/2019 .csv" df = pd.read_csv(filename,encoding="SHIFT-JIS") df = df.dropna() # 検証用データの説明変数とするデータ列の指定 x = ['Month', 'Week', 'Hour', 'Asa_Temp', 'Hako_Temp', 'Toma_Temp', 'Kushi_Temp', 'Aba_Temp'] # 検証用データの目的変数とするデータ列の指定 y = ['Power'] # それぞれの数値型を指定 x = df[x].values.astype('float') y = df[y].values.astype('int').flatten() x_test = scaler.transform(x) y_test = y # 予測 result = model.predict(x_test) # 予測結果(スコア) Score = 'Score =' + str(model.score(x_test,y_test)) print(Score) # グラフの準備 # データシートへの予測結果と年月日時刻の追加 df['PrePower'] = result df['Datetime'] = pd.to_datetime(df[['Year', 'Month', 'Day', 'Hour']]) # グラフ plt.figure(figsize=(16,4),facecolor='white') plt.title(MLname, size=16) plt.xlabel('Time') plt.ylabel('Demand (x10,000 kW)') plt.xlim(dt.datetime(2019,4,1,0), dt.datetime(2020,3,31,23)) # plt.xlim(datetime.datetime(2019,4,1,0), datetime.datetime(2019,4,2,23)) plt.grid(True) plt.plot(df['Datetime'], df['Power'], label='Act',linewidth = 0.7) plt.plot(df['Datetime'], df['PrePower'], label='Pre',linewidth = 0.7) plt.legend(loc='upper right') plt.text(dt.datetime(2019,4,2,0), 470, Score, size=14) # 作成したグラフの保存 plt.savefig("/content/drive/MyDrive/Colab Notebooks/Result.png")
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/15 02:23
2021/07/15 13:54