札幌市の日平均気温を機械学習を使って予測してみたのですが精度が良すぎて正しく予測できているか怪しいです。初学者なもので原因がさっぱり思いつきません。どなたか可能性の一つや二つ教えていただけると幸いです。
使用したデータ:気象庁のデータ2017~2019年 2017~2018を訓練データ、2019をテストデータに
結果: 訓練スコア: 0.9969811253623244 テストスコア: 0.9965872433096741
python
1from sklearn.linear_model import LinearRegression 2lr = LinearRegression() 3lr.fit(X_train, y_train)
**データ操作に不備はないことを確認したのでその部分のコードは省きます。
入力データ
ex [2.6, 3.3, -2.9, 64.0, 1011.6, 8.0] = [日照時間、最高気温、最低気温、平均湿度、平均現地気圧、平均雲量]
予測 日平均気温
python
1print(X_train) 2print(X_test) 3print(y_train) 4print(y_test)
X_train
[[ 8.0000e-01 1.6000e+00 -5.7000e+00 7.0000e+01 1.0160e+03 8.0000e+00]
[ 2.6000e+00 3.3000e+00 -2.9000e+00 6.4000e+01 1.0116e+03 8.0000e+00]
[ 6.0000e-01 8.0000e-01 -3.7000e+00 8.4000e+01 1.0112e+03 8.0000e+00]
...
[ 3.0000e+00 -1.0000e+00 -5.1000e+00 6.3000e+01 1.0036e+03 8.0000e+00]
[ 5.0000e-01 8.0000e-01 -4.5000e+00 7.6000e+01 1.0132e+03 8.0000e+00]
[ 1.0000e-01 5.0000e-01 -3.6000e+00 8.5000e+01 1.0204e+03 8.0000e+00]]
X_test
[[ 1.3000e+00 -5.0000e-01 -3.1000e+00 7.3000e+01 1.0138e+03 8.0000e+00]
[ 4.9000e+00 -6.0000e-01 -7.0000e+00 6.8000e+01 1.0139e+03 8.0000e+00]
[ 4.0000e-01 -8.0000e-01 -8.1000e+00 6.6000e+01 1.0180e+03 8.0000e+00]
...
[ 1.6000e+00 7.4000e+00 -5.8000e+00 7.6000e+01 1.0165e+03 8.0000e+00]
[ 3.8000e+00 8.1000e+00 -7.1000e+00 7.3000e+01 1.0030e+03 8.0000e+00]
[ 2.0000e-01 -4.1000e+00 -7.3000e+00 7.6000e+01 1.0093e+03 8.0000e+00]]
y_train
[-2. 0.1 -1.2 -2.5 -4.1 -4.3 -1.2 -2.7 -1.2 -4.2 -8.5 -8.6 -8.1 -7.7
-5.5 -0.1 -3. -2.4 -2.6 -4. -4.9 -5.6 -5. -9.1 -5.5 -2.4 0.7 -4.3
-2.7 -3.2 -5. -4.1 -7.7 -4.6 -0.1 -0.4 -0.8 -3.1 -1.2 -0.9 -1.5 -1.7
...
3.5 6.8 10.1 2.2 -0.9 -3.2 -5.9 -5.8 -5.5 -3.9 -3.1 -3.6 -2.6 -1.4
2.7 1.6 -0.8 -1.2 -1.8 0.7 1.6 1.8 -2.8 -1.3 -1.9 -7.2 -4.7 -3.5
-0.9 -1.2]
y_test
[ -1.9 -4.1 -3.3 -0.2 -2.2 -3. -4.8 -3.5 -2. 0.5 -3.6 -2.4
-5.1 -5. 0.1 -3. -7.9 -5. -1.8 -2.4 -5.2 -4.3 -2.3 -1.9
-1.6 -2.8 -4.3 -0.6 -1.5 -2.1 -4.4 -7. -5. 0.1 -1.7 -4.7
...
-1.2 -5.1 -3.6 -3.6 -1. -4.6 -1.8 6.3 6.8 2.7 0.1 1.4
-1.6 0.9 5.4 1.5 -1.9 -3.3 -1.3 -2.1 -3.7 -5. -3.4 -2.9
-2.7 -4.7 -2.9 1.5 -1.1 -5.8]
皆さんのおっしゃる通りデータに不備がありそうですね…。学習データとテストデータを上に示しました。
元データは以下のように分けました。
python
1x_train2 = x_data[0:730] 2x_test2 = x_data[730:1096] 3y_train2 = y_data[0:730] 4y_test2 = y_data[730:1096]
名前が違うのはこの後、上のリストをX_train = np.array(x_train2)みたいに配列に変えているためです。
うーん…どうでしょうか?
説明変数を前日のデータに変えてみました。
Training set score: 0.9423408520732327
Test set score: 0.9417546025663195
係数 [ 0.08076883 0.33253482 0.62133499 0.01178906 0.08027002 -0.13845382]
なんだか少しまともになった気がします。おっしゃる通り当日のデータをインプットして当日の気温をアウトプットしていたのは予測になっていないことがわかりました。ありがとうございました。
回答3件
あなたの回答
tips
プレビュー