質問編集履歴

3

正確にいうとエラーではなくて値がおかしかったのでタイトルを直しました

2020/06/02 05:34

投稿

samankoar
samankoar

スコア7

test CHANGED
@@ -1 +1 @@
1
- Python予測(RandomForestRegressor)でエラーが吐き出される
1
+ Python予測(RandomForestRegressor)を使うと負のscoreになるのがどういう意味すか?
test CHANGED
File without changes

2

いただいたコメントを元に違う視点で質問を変更しました。

2020/06/02 05:34

投稿

samankoar
samankoar

スコア7

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(final_data.dtypes)
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[['new_date', 'latitude', 'longitude']]
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
- その後、予測をするためにrandomforestを実行する
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(str(X_train), str(y_train))
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
- ValueError: could not convert string to float: ' time latitude longitude\n21 2016-06-29 22:56:14.420000+00:00 37.5057 57.5044\n12 2016-09-21 07:41:12.820000+00:00 27.0043 59.7705\n0 2016-12-27 20:56:24.270000+00:00 37.1945 55.8246\'
64
-
65
- ```
66
-
67
- 自分のデータにstringがないと思います!![イメージ説明](63616d917cfa51676531a18a0c1541c6.jpeg)
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

前提の言葉に漢字ミスがあった

2020/06/01 08:43

投稿

samankoar
samankoar

スコア7

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- 予測データセット(将来、数を増やす予定)が下のようです。
1
+ 使用しているデータセット(将来、数を増やす予定)が下のようです。
2
2
 
3
3
  ```ここに言語を入力
4
4