AI活用第3回2部1章RNN実行後のグラフ表示エラーの件

ツクレル 片山様
(今後の見通しのため新規トピックにしました)

個別対応頂いてます髙橋です。

追加で問い合わせました。
以下のRNNモデルのグラフ表示せずとエラー内容は変化ありませんでした。

(急いでたようで前回違うファイル名でした正しくは下記です。)
この章のrnn-forecast.ipynbの
冒頭にセル追加してご指示のNumpy実行して
! pip install numpy==1.19.5
それ以降順番に進めました。

次のご教授よろしくお願い申し上げます。

>もう一つで教えて下さい。(詳細は添付します)
>強制で進めましたがAI活用3回目2部1章以降の実行でグラフの表示がエラーにな>ってしまいます。
>損失値は正しそうですがそれ以降の章全てグラフ表示はエラーになります。
>以下の
>show_plot()関数実行
>(エラー指摘箇所はdef宣言内になってますが)でのscaler実行がダメな様で
>す。
>ValueError Traceback (most recent call last)

>def show_plot(history, measured, predicted, scaler):
>…
scaler # StandardScaler

>関連するライブラリで
>ValueError: Expected 2D array, got 1D array instead:
>…
>SEARCH STACK OVERFLOW
>も出ています。

よろしくお願い申し上げます。

おそらくscikit-learnのバージョンアップにより、描画関数内のscaler.inverse_transformが前提としているデータ形状と、引数に渡しているデータ形状との間で差異が生まれていることが原因かと思います。

つじつまを合わせるため、show_plot関数の呼び出しを以下のように変更してみてください。

# 予測値と実測値の描画を行う
index = 10
show_plot(
    x_val[index], # 実測値のサンプル
    y_val[index].reshape(-1, 1), # 実測値のラベル
    model.predict(x_val)[index].reshape(-1, 1), # モデルによる予測値
    scaler # StandardScaler
)

いつもお世話になってます。
確認しました。

ご指摘のデータ形状の指定でグラフが表示されました。

同じく3部5章後半のサンプルコードでも同じ症状でエラーが出ていたので
同じ対処をしました。
正しかったでしょうか?

サンプルコード修正箇所
index = (offset + day) * 24
show_plot(
x_test[index], # 実測値のサンプル
y_test[index].reshape(-1, 1), # 実測値のラベル
prediction[index].reshape(-1, 1), # モデルによる予測値
scaler # StandardScaler
)

このサンプルコードの実行結果は
offset=0だったので
Day 0 から Day6 までの1週間分のグラフが出ました。
モデルの変更やノードの変更で細かく見るのは今度やってみたいと思います。

日々各ライブラリはバージョンアップしていくのでエラーに
見舞われてしまいますがバージョンの指定方法や
今回のデータ形状の指定を聞けて前向きに捉えたいと思います。

よろしくお願い申し上げます。

2部5章のことでしたら、試して頂いた対処で問題ないと思います!

お手数お掛けしました。

駆け足で進めた状況もありデータ形状を熟知してなくて
出力結果に不安持ってました。
助かります。

よろしくお願い申し上げます。