元のデータです
地震のデータセットを用いて、発生時期・緯度・経度からマグニチュードと深さを予測しようと思っていますが、発生日付のフォーマットでうまくいきません
print(data.dtypes) time datetime64[ns, UTC] latitude float64 longitude float64 depth float64 mag float64 magType object nst float64 gap float64 dmin float64 rms float64 net object id object updated object place object type object horizontalError float64 depthError float64 magError float64 magNst float64 status object locationSource object magSource object dtype: object
コードは
#timeを日付と時間に分割 data['new_date'] = [d.date() for d in data['time']] data['new_time'] = [d.time() for d in data['time']] final_data = data[['time', 'new_date', 'new_time', 'latitude', 'longitude', 'depth', 'mag']]
確認すると
time datetime64[ns, UTC] new_date object new_time object latitude float64 longitude float64 depth float64 mag float64 dtype: object
final_data['month']= final_data['time'].dt.month final_data['year']= final_data['time'].dt.year #データをtrainとtest用に分けます X = final_data[['year', 'month', 'latitude', 'longitude']] y = final_data[['mag', 'depth']] from sklearn.model_selection import train_test_split X_train, X_test,y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=42) print(X_train.shape, X_test.shape, y_train.shape, y_test.shape)
(107, 4) (27, 4) (107, 2) (27, 2)
#予測をするためにrandomforestを実行する from sklearn.ensemble import RandomForestRegressor reg = RandomForestRegressor(random_state=42) reg.fit((X_train), (y_train)) reg.predict(X_test)
array([[ 4.65 , 20.75 ],
[ 4.61 , 10.223],
[ 4.68 , 10. ],
[ 4.72 , 10. ],
[ 4.9 , 11.02 ],
[ 4.57 , 9.983],
[ 4.59 , 16.735],
[ 4.69 , 9.543],
[ 5.37 , 17.217],
[ 5.02 , 18.4 ],
[ 5.1 , 11.2 ],
[ 4.66 , 10. ],
[ 4.72 , 26.106],
[ 5.77 , 11.3 ],
[ 4.66 , 10.159],
[ 5.09 , 29.443],
[ 4.55 , 9.983],
[ 4.84 , 16.776],
[ 4.55 , 9.983],
[ 4.71 , 10. ],
[ 5.2 , 13.439],
[ 4.72 , 9.847],
[ 4.77 , 12.127],
[ 4.63 , 22.94 ],
[ 4.72 , 10.767],
[ 5.49 , 11.3 ],
[ 5.04 , 10.2 ]])
reg.score(X_test, y_test)
-7.319324727219347
答えはマイナスになるのです。
new_dateとnew_timeの代わりにtimeを使ってもエラーになります(以下の)。
TypeError: float() argument must be a string or a number, not 'Timestamp'
予測に影響が大きのは月と年です。どうパラメータを正しく取ればいいのかわからないです
何が違うかヒントをいただけませんか
よろしくお願いします
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/01 06:30 編集
2020/06/01 06:37
2020/06/01 08:44