t_ml_1-5-2(質問管理番号)

回答日時: 11/28
Q:
下記のコードで。RMとPRICEの囲み方が異なります。RMだけ[]がついている。
data = df.loc[:, [‘RM’]].values
target = df.loc[:, ‘PRICE’].values
この違いの目的を教えてください。②動画では、
model.predict(8)
でOKでしたが、私の環境では、「2D-Arrayを入力せよ」とのエラーが出ます。
ためしに、
model.predict([[8]])
を入力したらうまくいきました。
なぜ、2D-Arrayを要求するのでしょうか?
また、E資格の試験では、8 と [[8]] の違い等を問うような知識は重要でしょうか?
A:
今回のように単独のカラムを指定する場合,[]をつけようがつけまいが特に違いはありません。ただ[]で囲えば複数のカラムを指定することができます(例 data = df.loc[:, [‘RM’,’CRIM’]].values)。通常のモデルの学習では説明変数に複数のカラムを用いることがほとんどなので、今回もそのことを暗示するために[]をつけたのだと思います。繰り返しになりますが単独のカラムを指定する場合[]がなくても全く構いません。②
“なぜ、2D-Arrayを要求するのでしょうか?”についてですが,これはmodel.fit()の引数に2D-Arrayを渡していたからです。学習時に2D-Arrayを用いていたのだから推論時にも同じ形である2D-Arrayを渡さなければなりません。
”E資格の試験では、8 と [[8]] の違い等を問うような知識は重要でしょうか?”についてですが,重要だと考えられます。なぜかというとE資格では配列の形を聞く問題が多いからです。ちなみにnumpyにおいて8と[8]と[[8]]ではそれぞれ0次元配列(つまり単体のスカラー),1次元配列,2次元配列として区別して処理されるので混同しないよう注意しましょう。