質問編集履歴
3
正確にいうとエラーではなくて値がおかしかったのでタイトルを直しました
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
Python予測(RandomForestRegressor)で
|
1
|
+
Pythonで予測(RandomForestRegressor)を使うと負のscoreになるのがどういう意味ですか?
|
test
CHANGED
File without changes
|
2
いただいたコメントを元に違う視点で質問を変更しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,10 +1,78 @@
|
|
1
|
+
元のデータです
|
2
|
+
|
1
|
-
|
3
|
+
![イメージ説明](499810a42fef69d949a52e998b4aca49.jpeg)
|
4
|
+
|
2
|
-
|
5
|
+
地震のデータセットを用いて、発生時期・緯度・経度からマグニチュードと深さを予測しようと思っていますが、発生日付のフォーマットでうまくいきません
|
6
|
+
|
3
|
-
```ここに言語を入力
|
7
|
+
```ここに言語を入力
|
4
|
-
|
5
|
-
|
6
|
-
|
8
|
+
|
7
|
-
print(
|
9
|
+
print(data.dtypes)
|
10
|
+
|
11
|
+
time datetime64[ns, UTC]
|
12
|
+
|
13
|
+
latitude float64
|
14
|
+
|
15
|
+
longitude float64
|
16
|
+
|
17
|
+
depth float64
|
18
|
+
|
19
|
+
mag float64
|
20
|
+
|
21
|
+
magType object
|
22
|
+
|
23
|
+
nst float64
|
24
|
+
|
25
|
+
gap float64
|
26
|
+
|
27
|
+
dmin float64
|
28
|
+
|
29
|
+
rms float64
|
30
|
+
|
31
|
+
net object
|
32
|
+
|
33
|
+
id object
|
34
|
+
|
35
|
+
updated object
|
36
|
+
|
37
|
+
place object
|
38
|
+
|
39
|
+
type object
|
40
|
+
|
41
|
+
horizontalError float64
|
42
|
+
|
43
|
+
depthError float64
|
44
|
+
|
45
|
+
magError float64
|
46
|
+
|
47
|
+
magNst float64
|
48
|
+
|
49
|
+
status object
|
50
|
+
|
51
|
+
locationSource object
|
52
|
+
|
53
|
+
magSource object
|
54
|
+
|
55
|
+
dtype: object
|
56
|
+
|
57
|
+
```
|
58
|
+
|
59
|
+
コードは
|
60
|
+
|
61
|
+
```ここに言語を入力
|
62
|
+
|
63
|
+
#timeを日付と時間に分割
|
64
|
+
|
65
|
+
data['new_date'] = [d.date() for d in data['time']]
|
66
|
+
|
67
|
+
data['new_time'] = [d.time() for d in data['time']]
|
68
|
+
|
69
|
+
final_data = data[['time', 'new_date', 'new_time', 'latitude', 'longitude', 'depth', 'mag']]
|
70
|
+
|
71
|
+
```
|
72
|
+
|
73
|
+
確認すると
|
74
|
+
|
75
|
+
```ここに言語を入力
|
8
76
|
|
9
77
|
time datetime64[ns, UTC]
|
10
78
|
|
@@ -24,14 +92,20 @@
|
|
24
92
|
|
25
93
|
```
|
26
94
|
|
27
|
-
データをtrainとtest用に分けます
|
28
|
-
|
29
|
-
```ここに言語を入力
|
95
|
+
```ここに言語を入力
|
96
|
+
|
30
|
-
|
97
|
+
final_data['month']= final_data['time'].dt.month
|
98
|
+
|
99
|
+
final_data['year']= final_data['time'].dt.year
|
100
|
+
|
101
|
+
#データをtrainとtest用に分けます
|
102
|
+
|
31
|
-
X = final_data[['
|
103
|
+
X = final_data[['year', 'month', 'latitude', 'longitude']]
|
32
104
|
|
33
105
|
y = final_data[['mag', 'depth']]
|
34
106
|
|
107
|
+
|
108
|
+
|
35
109
|
from sklearn.model_selection import train_test_split
|
36
110
|
|
37
111
|
X_train, X_test,y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=42)
|
@@ -40,9 +114,11 @@
|
|
40
114
|
|
41
115
|
```
|
42
116
|
|
43
|
-
|
117
|
+
(107, 4) (27, 4) (107, 2) (27, 2)
|
44
|
-
|
118
|
+
|
45
|
-
```ここに言語を入力
|
119
|
+
```ここに言語を入力
|
120
|
+
|
121
|
+
#予測をするためにrandomforestを実行する
|
46
122
|
|
47
123
|
from sklearn.ensemble import RandomForestRegressor
|
48
124
|
|
@@ -50,23 +126,91 @@
|
|
50
126
|
|
51
127
|
reg = RandomForestRegressor(random_state=42)
|
52
128
|
|
53
|
-
reg.fit(
|
129
|
+
reg.fit((X_train), (y_train))
|
54
130
|
|
55
131
|
reg.predict(X_test)
|
56
132
|
|
57
133
|
```
|
58
134
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
135
|
+
array([[ 4.65 , 20.75 ],
|
136
|
+
|
137
|
+
[ 4.61 , 10.223],
|
138
|
+
|
139
|
+
[ 4.68 , 10. ],
|
140
|
+
|
141
|
+
[ 4.72 , 10. ],
|
142
|
+
|
143
|
+
[ 4.9 , 11.02 ],
|
144
|
+
|
145
|
+
[ 4.57 , 9.983],
|
146
|
+
|
147
|
+
[ 4.59 , 16.735],
|
148
|
+
|
149
|
+
[ 4.69 , 9.543],
|
150
|
+
|
151
|
+
[ 5.37 , 17.217],
|
152
|
+
|
153
|
+
[ 5.02 , 18.4 ],
|
154
|
+
|
155
|
+
[ 5.1 , 11.2 ],
|
156
|
+
|
157
|
+
[ 4.66 , 10. ],
|
158
|
+
|
159
|
+
[ 4.72 , 26.106],
|
160
|
+
|
161
|
+
[ 5.77 , 11.3 ],
|
162
|
+
|
163
|
+
[ 4.66 , 10.159],
|
164
|
+
|
165
|
+
[ 5.09 , 29.443],
|
166
|
+
|
167
|
+
[ 4.55 , 9.983],
|
168
|
+
|
169
|
+
[ 4.84 , 16.776],
|
170
|
+
|
171
|
+
[ 4.55 , 9.983],
|
172
|
+
|
173
|
+
[ 4.71 , 10. ],
|
174
|
+
|
175
|
+
[ 5.2 , 13.439],
|
176
|
+
|
177
|
+
[ 4.72 , 9.847],
|
178
|
+
|
179
|
+
[ 4.77 , 12.127],
|
180
|
+
|
181
|
+
[ 4.63 , 22.94 ],
|
182
|
+
|
183
|
+
[ 4.72 , 10.767],
|
184
|
+
|
185
|
+
[ 5.49 , 11.3 ],
|
186
|
+
|
187
|
+
[ 5.04 , 10.2 ]])
|
188
|
+
|
189
|
+
|
190
|
+
|
191
|
+
```ここに言語を入力
|
192
|
+
|
193
|
+
reg.score(X_test, y_test)
|
194
|
+
|
195
|
+
```
|
196
|
+
|
197
|
+
-7.319324727219347
|
198
|
+
|
199
|
+
|
200
|
+
|
201
|
+
答えはマイナスになるのです。
|
202
|
+
|
203
|
+
new_dateとnew_timeの代わりにtimeを使ってもエラーになります(以下の)。
|
204
|
+
|
205
|
+
```ここに言語を入力
|
206
|
+
|
207
|
+
TypeError: float() argument must be a string or a number, not 'Timestamp'
|
208
|
+
|
209
|
+
```
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
予測に影響が大きのは月と年です。どうパラメータを正しく取ればいいのかわからないです
|
70
214
|
|
71
215
|
何が違うかヒントをいただけませんか
|
72
216
|
|
1
前提の言葉に漢字ミスがあった
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
使用しているデータセット(将来、数を増やす予定)が下のようです。
|
2
2
|
|
3
3
|
```ここに言語を入力
|
4
4
|
|