質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1077閲覧

予測結果をMAPE(平均絶対誤差率)に変更したい

n_r

総合スコア1

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/07/14 17:38

#前提・実現したい事
北海道の電力需要の機械学習の勉強をしています。
予測結果を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")

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

sckitlearnの中に該当する関数があるのでそれを使うといいかと思います。

from sklearn.metrics import mean_absolute_percentage_error as mape mape_score = mape(y_test,result)

関数の第一引数は、真の値(つまり観測値)です。第二引数は予測結果になります。
なお、scikitlearnのバージョンが古いと当該関数は未実装なので、あらかじめ最新(0.24.2)にしておくといいかと思います。

投稿2021/07/14 21:06

R.Shigemori

総合スコア3376

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

n_r

2021/07/15 02:23

sklearnのバージョンが古いことは判明しました。 しかし申し訳ないのですがバージョンの更新というのはどのように行うのでしょうか
R.Shigemori

2021/07/15 13:54

anacondaとセットでインストールしたのであれば、conda update モジュール名(例 scikit-learn)でいけるはずです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問