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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

統計

統計は、集団現象を数量で把握することです。また、調査で得られた性質や傾向を数量的に表したデータのことをいいます。

Q&A

解決済

2回答

1332閲覧

Python 統計 Cofficient, MAE,MSEについて

Satomi07

総合スコア24

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

統計

統計は、集団現象を数量で把握することです。また、調査で得られた性質や傾向を数量的に表したデータのことをいいます。

0グッド

0クリップ

投稿2019/05/12 09:40

前提・実現したいこと

pythonで重回帰分析をしています。
スケールが異なる従属変数ですが、正規化せず重回帰分析を行い、
coffieientがeが付くほど大きくなりました。

このような値でm、いいのでしょうか?

発生している問題・エラーメッセージ

Features cofficient
FeatureA -6.616971e-04
FeatureB -6.175574e-03
FeatureC -1.618145e-03


MSE= 0.00233481468683
MAE= 2372.86

該当のソースコード

python3.6

clf = linear_model.LinearRegression()
clf.fit(X_ALL,y_DSOC)

coef_df = pd.DataFrame(Features,columns=['Features'])
coef_df['cofficient']=pd.Series(clf.coef_)

y_pred=clf.predict(X_ALL)
mse=mean_squared_error(y_DSOC,y_pred)
mae=np.sum(np.abs(y_DSOC,y_pred))
print('MSE=',mse)
print('MAE=',mae)

試したこと

正規化して計算してみたところ、cofficientは小さくなったものの、
MSE,MAEがあり得ない値になり、うまくいきません。
(外れ値除去など試したのですが…)

X_ALL=preprocessing.scale(ev_select04_df.iloc[:,1:24])
y_DSOC=preprocessing.scale(ev_select04_df.iloc[:,0])

Features cofficient
FeatureA -0.331156
FeatureB -0.541651
FeatureC -0.022987

MSE= 0.456087360862
MAE= 30240.083222

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

自己解決

前処理を繰り返し何とかまともな計算結果が出るようになりました。
ありがとうございます。

from sklearn.metrics import mean_absolute_error
mae=mean_absolute_error(y_DSOC, y_pred)

MAEは、ご指摘ありがとうございます、一部抜けていたようでしたので、これを参考になおしました。

投稿2019/05/25 12:05

Satomi07

総合スコア24

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

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

0

FeatureA -6.616971e-04 FeatureB -6.175574e-03 FeatureC -1.618145e-03

符号がマイナスなので、とても小さいことを表します(10^-3くらい)。

また、np.absの使い方がおかしいのではないでしょうか。第二引数は出力用配列として解釈されます。

https://docs.scipy.org/doc/numpy/reference/generated/numpy.absolute.html

python

1mae=np.sum(np.abs(y_DSOC-y_pred)) 2

のように、引き算した結果を与える必要があると思います。

投稿2019/05/12 10:18

編集2019/05/12 10:19
hayataka2049

総合スコア30933

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問