|
a |
|
b/NESTCOMPETIITION.ipynb |
|
|
1 |
{ |
|
|
2 |
"nbformat": 4, |
|
|
3 |
"nbformat_minor": 0, |
|
|
4 |
"metadata": { |
|
|
5 |
"colab": { |
|
|
6 |
"provenance": [], |
|
|
7 |
"gpuType": "T4" |
|
|
8 |
}, |
|
|
9 |
"kernelspec": { |
|
|
10 |
"name": "python3", |
|
|
11 |
"display_name": "Python 3" |
|
|
12 |
}, |
|
|
13 |
"language_info": { |
|
|
14 |
"name": "python" |
|
|
15 |
}, |
|
|
16 |
"accelerator": "GPU", |
|
|
17 |
"widgets": { |
|
|
18 |
"application/vnd.jupyter.widget-state+json": { |
|
|
19 |
"e41925970dc94c2aa90b4da8acac85cf": { |
|
|
20 |
"model_module": "@jupyter-widgets/controls", |
|
|
21 |
"model_name": "HBoxModel", |
|
|
22 |
"model_module_version": "1.5.0", |
|
|
23 |
"state": { |
|
|
24 |
"_dom_classes": [], |
|
|
25 |
"_model_module": "@jupyter-widgets/controls", |
|
|
26 |
"_model_module_version": "1.5.0", |
|
|
27 |
"_model_name": "HBoxModel", |
|
|
28 |
"_view_count": null, |
|
|
29 |
"_view_module": "@jupyter-widgets/controls", |
|
|
30 |
"_view_module_version": "1.5.0", |
|
|
31 |
"_view_name": "HBoxView", |
|
|
32 |
"box_style": "", |
|
|
33 |
"children": [ |
|
|
34 |
"IPY_MODEL_c1f0f99a4a4341d18e0039a71b305111", |
|
|
35 |
"IPY_MODEL_d54d01c91e694b3eb180170cddd1211c", |
|
|
36 |
"IPY_MODEL_3c707baf63cf4cbf9732e39ddeb84c7c" |
|
|
37 |
], |
|
|
38 |
"layout": "IPY_MODEL_08955c157996426eaa089d878b8d820f" |
|
|
39 |
} |
|
|
40 |
}, |
|
|
41 |
"c1f0f99a4a4341d18e0039a71b305111": { |
|
|
42 |
"model_module": "@jupyter-widgets/controls", |
|
|
43 |
"model_name": "HTMLModel", |
|
|
44 |
"model_module_version": "1.5.0", |
|
|
45 |
"state": { |
|
|
46 |
"_dom_classes": [], |
|
|
47 |
"_model_module": "@jupyter-widgets/controls", |
|
|
48 |
"_model_module_version": "1.5.0", |
|
|
49 |
"_model_name": "HTMLModel", |
|
|
50 |
"_view_count": null, |
|
|
51 |
"_view_module": "@jupyter-widgets/controls", |
|
|
52 |
"_view_module_version": "1.5.0", |
|
|
53 |
"_view_name": "HTMLView", |
|
|
54 |
"description": "", |
|
|
55 |
"description_tooltip": null, |
|
|
56 |
"layout": "IPY_MODEL_da9c8ff09bed4c6989b0246c7bdc8fd7", |
|
|
57 |
"placeholder": "", |
|
|
58 |
"style": "IPY_MODEL_b78266bbcc0e4ed0bcaab9009b30d98e", |
|
|
59 |
"value": "tokenizer_config.json: 100%" |
|
|
60 |
} |
|
|
61 |
}, |
|
|
62 |
"d54d01c91e694b3eb180170cddd1211c": { |
|
|
63 |
"model_module": "@jupyter-widgets/controls", |
|
|
64 |
"model_name": "FloatProgressModel", |
|
|
65 |
"model_module_version": "1.5.0", |
|
|
66 |
"state": { |
|
|
67 |
"_dom_classes": [], |
|
|
68 |
"_model_module": "@jupyter-widgets/controls", |
|
|
69 |
"_model_module_version": "1.5.0", |
|
|
70 |
"_model_name": "FloatProgressModel", |
|
|
71 |
"_view_count": null, |
|
|
72 |
"_view_module": "@jupyter-widgets/controls", |
|
|
73 |
"_view_module_version": "1.5.0", |
|
|
74 |
"_view_name": "ProgressView", |
|
|
75 |
"bar_style": "success", |
|
|
76 |
"description": "", |
|
|
77 |
"description_tooltip": null, |
|
|
78 |
"layout": "IPY_MODEL_2fd8c28ebf1b47f78e2e0093608407cf", |
|
|
79 |
"max": 28, |
|
|
80 |
"min": 0, |
|
|
81 |
"orientation": "horizontal", |
|
|
82 |
"style": "IPY_MODEL_8c728d06a0814cc8b83931b24f0115d9", |
|
|
83 |
"value": 28 |
|
|
84 |
} |
|
|
85 |
}, |
|
|
86 |
"3c707baf63cf4cbf9732e39ddeb84c7c": { |
|
|
87 |
"model_module": "@jupyter-widgets/controls", |
|
|
88 |
"model_name": "HTMLModel", |
|
|
89 |
"model_module_version": "1.5.0", |
|
|
90 |
"state": { |
|
|
91 |
"_dom_classes": [], |
|
|
92 |
"_model_module": "@jupyter-widgets/controls", |
|
|
93 |
"_model_module_version": "1.5.0", |
|
|
94 |
"_model_name": "HTMLModel", |
|
|
95 |
"_view_count": null, |
|
|
96 |
"_view_module": "@jupyter-widgets/controls", |
|
|
97 |
"_view_module_version": "1.5.0", |
|
|
98 |
"_view_name": "HTMLView", |
|
|
99 |
"description": "", |
|
|
100 |
"description_tooltip": null, |
|
|
101 |
"layout": "IPY_MODEL_da4b0713ce9f47208a39ec89515c30e4", |
|
|
102 |
"placeholder": "", |
|
|
103 |
"style": "IPY_MODEL_b2fd795e6a534319a87213f05e824315", |
|
|
104 |
"value": " 28.0/28.0 [00:00<00:00, 1.45kB/s]" |
|
|
105 |
} |
|
|
106 |
}, |
|
|
107 |
"08955c157996426eaa089d878b8d820f": { |
|
|
108 |
"model_module": "@jupyter-widgets/base", |
|
|
109 |
"model_name": "LayoutModel", |
|
|
110 |
"model_module_version": "1.2.0", |
|
|
111 |
"state": { |
|
|
112 |
"_model_module": "@jupyter-widgets/base", |
|
|
113 |
"_model_module_version": "1.2.0", |
|
|
114 |
"_model_name": "LayoutModel", |
|
|
115 |
"_view_count": null, |
|
|
116 |
"_view_module": "@jupyter-widgets/base", |
|
|
117 |
"_view_module_version": "1.2.0", |
|
|
118 |
"_view_name": "LayoutView", |
|
|
119 |
"align_content": null, |
|
|
120 |
"align_items": null, |
|
|
121 |
"align_self": null, |
|
|
122 |
"border": null, |
|
|
123 |
"bottom": null, |
|
|
124 |
"display": null, |
|
|
125 |
"flex": null, |
|
|
126 |
"flex_flow": null, |
|
|
127 |
"grid_area": null, |
|
|
128 |
"grid_auto_columns": null, |
|
|
129 |
"grid_auto_flow": null, |
|
|
130 |
"grid_auto_rows": null, |
|
|
131 |
"grid_column": null, |
|
|
132 |
"grid_gap": null, |
|
|
133 |
"grid_row": null, |
|
|
134 |
"grid_template_areas": null, |
|
|
135 |
"grid_template_columns": null, |
|
|
136 |
"grid_template_rows": null, |
|
|
137 |
"height": null, |
|
|
138 |
"justify_content": null, |
|
|
139 |
"justify_items": null, |
|
|
140 |
"left": null, |
|
|
141 |
"margin": null, |
|
|
142 |
"max_height": null, |
|
|
143 |
"max_width": null, |
|
|
144 |
"min_height": null, |
|
|
145 |
"min_width": null, |
|
|
146 |
"object_fit": null, |
|
|
147 |
"object_position": null, |
|
|
148 |
"order": null, |
|
|
149 |
"overflow": null, |
|
|
150 |
"overflow_x": null, |
|
|
151 |
"overflow_y": null, |
|
|
152 |
"padding": null, |
|
|
153 |
"right": null, |
|
|
154 |
"top": null, |
|
|
155 |
"visibility": null, |
|
|
156 |
"width": null |
|
|
157 |
} |
|
|
158 |
}, |
|
|
159 |
"da9c8ff09bed4c6989b0246c7bdc8fd7": { |
|
|
160 |
"model_module": "@jupyter-widgets/base", |
|
|
161 |
"model_name": "LayoutModel", |
|
|
162 |
"model_module_version": "1.2.0", |
|
|
163 |
"state": { |
|
|
164 |
"_model_module": "@jupyter-widgets/base", |
|
|
165 |
"_model_module_version": "1.2.0", |
|
|
166 |
"_model_name": "LayoutModel", |
|
|
167 |
"_view_count": null, |
|
|
168 |
"_view_module": "@jupyter-widgets/base", |
|
|
169 |
"_view_module_version": "1.2.0", |
|
|
170 |
"_view_name": "LayoutView", |
|
|
171 |
"align_content": null, |
|
|
172 |
"align_items": null, |
|
|
173 |
"align_self": null, |
|
|
174 |
"border": null, |
|
|
175 |
"bottom": null, |
|
|
176 |
"display": null, |
|
|
177 |
"flex": null, |
|
|
178 |
"flex_flow": null, |
|
|
179 |
"grid_area": null, |
|
|
180 |
"grid_auto_columns": null, |
|
|
181 |
"grid_auto_flow": null, |
|
|
182 |
"grid_auto_rows": null, |
|
|
183 |
"grid_column": null, |
|
|
184 |
"grid_gap": null, |
|
|
185 |
"grid_row": null, |
|
|
186 |
"grid_template_areas": null, |
|
|
187 |
"grid_template_columns": null, |
|
|
188 |
"grid_template_rows": null, |
|
|
189 |
"height": null, |
|
|
190 |
"justify_content": null, |
|
|
191 |
"justify_items": null, |
|
|
192 |
"left": null, |
|
|
193 |
"margin": null, |
|
|
194 |
"max_height": null, |
|
|
195 |
"max_width": null, |
|
|
196 |
"min_height": null, |
|
|
197 |
"min_width": null, |
|
|
198 |
"object_fit": null, |
|
|
199 |
"object_position": null, |
|
|
200 |
"order": null, |
|
|
201 |
"overflow": null, |
|
|
202 |
"overflow_x": null, |
|
|
203 |
"overflow_y": null, |
|
|
204 |
"padding": null, |
|
|
205 |
"right": null, |
|
|
206 |
"top": null, |
|
|
207 |
"visibility": null, |
|
|
208 |
"width": null |
|
|
209 |
} |
|
|
210 |
}, |
|
|
211 |
"b78266bbcc0e4ed0bcaab9009b30d98e": { |
|
|
212 |
"model_module": "@jupyter-widgets/controls", |
|
|
213 |
"model_name": "DescriptionStyleModel", |
|
|
214 |
"model_module_version": "1.5.0", |
|
|
215 |
"state": { |
|
|
216 |
"_model_module": "@jupyter-widgets/controls", |
|
|
217 |
"_model_module_version": "1.5.0", |
|
|
218 |
"_model_name": "DescriptionStyleModel", |
|
|
219 |
"_view_count": null, |
|
|
220 |
"_view_module": "@jupyter-widgets/base", |
|
|
221 |
"_view_module_version": "1.2.0", |
|
|
222 |
"_view_name": "StyleView", |
|
|
223 |
"description_width": "" |
|
|
224 |
} |
|
|
225 |
}, |
|
|
226 |
"2fd8c28ebf1b47f78e2e0093608407cf": { |
|
|
227 |
"model_module": "@jupyter-widgets/base", |
|
|
228 |
"model_name": "LayoutModel", |
|
|
229 |
"model_module_version": "1.2.0", |
|
|
230 |
"state": { |
|
|
231 |
"_model_module": "@jupyter-widgets/base", |
|
|
232 |
"_model_module_version": "1.2.0", |
|
|
233 |
"_model_name": "LayoutModel", |
|
|
234 |
"_view_count": null, |
|
|
235 |
"_view_module": "@jupyter-widgets/base", |
|
|
236 |
"_view_module_version": "1.2.0", |
|
|
237 |
"_view_name": "LayoutView", |
|
|
238 |
"align_content": null, |
|
|
239 |
"align_items": null, |
|
|
240 |
"align_self": null, |
|
|
241 |
"border": null, |
|
|
242 |
"bottom": null, |
|
|
243 |
"display": null, |
|
|
244 |
"flex": null, |
|
|
245 |
"flex_flow": null, |
|
|
246 |
"grid_area": null, |
|
|
247 |
"grid_auto_columns": null, |
|
|
248 |
"grid_auto_flow": null, |
|
|
249 |
"grid_auto_rows": null, |
|
|
250 |
"grid_column": null, |
|
|
251 |
"grid_gap": null, |
|
|
252 |
"grid_row": null, |
|
|
253 |
"grid_template_areas": null, |
|
|
254 |
"grid_template_columns": null, |
|
|
255 |
"grid_template_rows": null, |
|
|
256 |
"height": null, |
|
|
257 |
"justify_content": null, |
|
|
258 |
"justify_items": null, |
|
|
259 |
"left": null, |
|
|
260 |
"margin": null, |
|
|
261 |
"max_height": null, |
|
|
262 |
"max_width": null, |
|
|
263 |
"min_height": null, |
|
|
264 |
"min_width": null, |
|
|
265 |
"object_fit": null, |
|
|
266 |
"object_position": null, |
|
|
267 |
"order": null, |
|
|
268 |
"overflow": null, |
|
|
269 |
"overflow_x": null, |
|
|
270 |
"overflow_y": null, |
|
|
271 |
"padding": null, |
|
|
272 |
"right": null, |
|
|
273 |
"top": null, |
|
|
274 |
"visibility": null, |
|
|
275 |
"width": null |
|
|
276 |
} |
|
|
277 |
}, |
|
|
278 |
"8c728d06a0814cc8b83931b24f0115d9": { |
|
|
279 |
"model_module": "@jupyter-widgets/controls", |
|
|
280 |
"model_name": "ProgressStyleModel", |
|
|
281 |
"model_module_version": "1.5.0", |
|
|
282 |
"state": { |
|
|
283 |
"_model_module": "@jupyter-widgets/controls", |
|
|
284 |
"_model_module_version": "1.5.0", |
|
|
285 |
"_model_name": "ProgressStyleModel", |
|
|
286 |
"_view_count": null, |
|
|
287 |
"_view_module": "@jupyter-widgets/base", |
|
|
288 |
"_view_module_version": "1.2.0", |
|
|
289 |
"_view_name": "StyleView", |
|
|
290 |
"bar_color": null, |
|
|
291 |
"description_width": "" |
|
|
292 |
} |
|
|
293 |
}, |
|
|
294 |
"da4b0713ce9f47208a39ec89515c30e4": { |
|
|
295 |
"model_module": "@jupyter-widgets/base", |
|
|
296 |
"model_name": "LayoutModel", |
|
|
297 |
"model_module_version": "1.2.0", |
|
|
298 |
"state": { |
|
|
299 |
"_model_module": "@jupyter-widgets/base", |
|
|
300 |
"_model_module_version": "1.2.0", |
|
|
301 |
"_model_name": "LayoutModel", |
|
|
302 |
"_view_count": null, |
|
|
303 |
"_view_module": "@jupyter-widgets/base", |
|
|
304 |
"_view_module_version": "1.2.0", |
|
|
305 |
"_view_name": "LayoutView", |
|
|
306 |
"align_content": null, |
|
|
307 |
"align_items": null, |
|
|
308 |
"align_self": null, |
|
|
309 |
"border": null, |
|
|
310 |
"bottom": null, |
|
|
311 |
"display": null, |
|
|
312 |
"flex": null, |
|
|
313 |
"flex_flow": null, |
|
|
314 |
"grid_area": null, |
|
|
315 |
"grid_auto_columns": null, |
|
|
316 |
"grid_auto_flow": null, |
|
|
317 |
"grid_auto_rows": null, |
|
|
318 |
"grid_column": null, |
|
|
319 |
"grid_gap": null, |
|
|
320 |
"grid_row": null, |
|
|
321 |
"grid_template_areas": null, |
|
|
322 |
"grid_template_columns": null, |
|
|
323 |
"grid_template_rows": null, |
|
|
324 |
"height": null, |
|
|
325 |
"justify_content": null, |
|
|
326 |
"justify_items": null, |
|
|
327 |
"left": null, |
|
|
328 |
"margin": null, |
|
|
329 |
"max_height": null, |
|
|
330 |
"max_width": null, |
|
|
331 |
"min_height": null, |
|
|
332 |
"min_width": null, |
|
|
333 |
"object_fit": null, |
|
|
334 |
"object_position": null, |
|
|
335 |
"order": null, |
|
|
336 |
"overflow": null, |
|
|
337 |
"overflow_x": null, |
|
|
338 |
"overflow_y": null, |
|
|
339 |
"padding": null, |
|
|
340 |
"right": null, |
|
|
341 |
"top": null, |
|
|
342 |
"visibility": null, |
|
|
343 |
"width": null |
|
|
344 |
} |
|
|
345 |
}, |
|
|
346 |
"b2fd795e6a534319a87213f05e824315": { |
|
|
347 |
"model_module": "@jupyter-widgets/controls", |
|
|
348 |
"model_name": "DescriptionStyleModel", |
|
|
349 |
"model_module_version": "1.5.0", |
|
|
350 |
"state": { |
|
|
351 |
"_model_module": "@jupyter-widgets/controls", |
|
|
352 |
"_model_module_version": "1.5.0", |
|
|
353 |
"_model_name": "DescriptionStyleModel", |
|
|
354 |
"_view_count": null, |
|
|
355 |
"_view_module": "@jupyter-widgets/base", |
|
|
356 |
"_view_module_version": "1.2.0", |
|
|
357 |
"_view_name": "StyleView", |
|
|
358 |
"description_width": "" |
|
|
359 |
} |
|
|
360 |
}, |
|
|
361 |
"0722a8ceb94345a79e5bdc3b84f71d7f": { |
|
|
362 |
"model_module": "@jupyter-widgets/controls", |
|
|
363 |
"model_name": "HBoxModel", |
|
|
364 |
"model_module_version": "1.5.0", |
|
|
365 |
"state": { |
|
|
366 |
"_dom_classes": [], |
|
|
367 |
"_model_module": "@jupyter-widgets/controls", |
|
|
368 |
"_model_module_version": "1.5.0", |
|
|
369 |
"_model_name": "HBoxModel", |
|
|
370 |
"_view_count": null, |
|
|
371 |
"_view_module": "@jupyter-widgets/controls", |
|
|
372 |
"_view_module_version": "1.5.0", |
|
|
373 |
"_view_name": "HBoxView", |
|
|
374 |
"box_style": "", |
|
|
375 |
"children": [ |
|
|
376 |
"IPY_MODEL_7c04cff87d1041b1878488f5014f9b7c", |
|
|
377 |
"IPY_MODEL_0ef4539514a1462caacf58e5c3fa516b", |
|
|
378 |
"IPY_MODEL_4c61a2b37c4c4ffbb3a10d270140724f" |
|
|
379 |
], |
|
|
380 |
"layout": "IPY_MODEL_d1288d4268e74bd384064c4f2cfbfa7b" |
|
|
381 |
} |
|
|
382 |
}, |
|
|
383 |
"7c04cff87d1041b1878488f5014f9b7c": { |
|
|
384 |
"model_module": "@jupyter-widgets/controls", |
|
|
385 |
"model_name": "HTMLModel", |
|
|
386 |
"model_module_version": "1.5.0", |
|
|
387 |
"state": { |
|
|
388 |
"_dom_classes": [], |
|
|
389 |
"_model_module": "@jupyter-widgets/controls", |
|
|
390 |
"_model_module_version": "1.5.0", |
|
|
391 |
"_model_name": "HTMLModel", |
|
|
392 |
"_view_count": null, |
|
|
393 |
"_view_module": "@jupyter-widgets/controls", |
|
|
394 |
"_view_module_version": "1.5.0", |
|
|
395 |
"_view_name": "HTMLView", |
|
|
396 |
"description": "", |
|
|
397 |
"description_tooltip": null, |
|
|
398 |
"layout": "IPY_MODEL_1c84ce5cb56a4c7286c0f5981b8fbd5a", |
|
|
399 |
"placeholder": "", |
|
|
400 |
"style": "IPY_MODEL_61a01f78b9714e4aa0d869d8e6563e81", |
|
|
401 |
"value": "config.json: 100%" |
|
|
402 |
} |
|
|
403 |
}, |
|
|
404 |
"0ef4539514a1462caacf58e5c3fa516b": { |
|
|
405 |
"model_module": "@jupyter-widgets/controls", |
|
|
406 |
"model_name": "FloatProgressModel", |
|
|
407 |
"model_module_version": "1.5.0", |
|
|
408 |
"state": { |
|
|
409 |
"_dom_classes": [], |
|
|
410 |
"_model_module": "@jupyter-widgets/controls", |
|
|
411 |
"_model_module_version": "1.5.0", |
|
|
412 |
"_model_name": "FloatProgressModel", |
|
|
413 |
"_view_count": null, |
|
|
414 |
"_view_module": "@jupyter-widgets/controls", |
|
|
415 |
"_view_module_version": "1.5.0", |
|
|
416 |
"_view_name": "ProgressView", |
|
|
417 |
"bar_style": "success", |
|
|
418 |
"description": "", |
|
|
419 |
"description_tooltip": null, |
|
|
420 |
"layout": "IPY_MODEL_180753d93be944e98c47bba836397ba0", |
|
|
421 |
"max": 385, |
|
|
422 |
"min": 0, |
|
|
423 |
"orientation": "horizontal", |
|
|
424 |
"style": "IPY_MODEL_db137743dfc24b6b84c6c15bcd5b5766", |
|
|
425 |
"value": 385 |
|
|
426 |
} |
|
|
427 |
}, |
|
|
428 |
"4c61a2b37c4c4ffbb3a10d270140724f": { |
|
|
429 |
"model_module": "@jupyter-widgets/controls", |
|
|
430 |
"model_name": "HTMLModel", |
|
|
431 |
"model_module_version": "1.5.0", |
|
|
432 |
"state": { |
|
|
433 |
"_dom_classes": [], |
|
|
434 |
"_model_module": "@jupyter-widgets/controls", |
|
|
435 |
"_model_module_version": "1.5.0", |
|
|
436 |
"_model_name": "HTMLModel", |
|
|
437 |
"_view_count": null, |
|
|
438 |
"_view_module": "@jupyter-widgets/controls", |
|
|
439 |
"_view_module_version": "1.5.0", |
|
|
440 |
"_view_name": "HTMLView", |
|
|
441 |
"description": "", |
|
|
442 |
"description_tooltip": null, |
|
|
443 |
"layout": "IPY_MODEL_16f88feb88fc43b5b381521d91b02150", |
|
|
444 |
"placeholder": "", |
|
|
445 |
"style": "IPY_MODEL_9b2a4006744a4940aa64fd9e41d62d4e", |
|
|
446 |
"value": " 385/385 [00:00<00:00, 21.0kB/s]" |
|
|
447 |
} |
|
|
448 |
}, |
|
|
449 |
"d1288d4268e74bd384064c4f2cfbfa7b": { |
|
|
450 |
"model_module": "@jupyter-widgets/base", |
|
|
451 |
"model_name": "LayoutModel", |
|
|
452 |
"model_module_version": "1.2.0", |
|
|
453 |
"state": { |
|
|
454 |
"_model_module": "@jupyter-widgets/base", |
|
|
455 |
"_model_module_version": "1.2.0", |
|
|
456 |
"_model_name": "LayoutModel", |
|
|
457 |
"_view_count": null, |
|
|
458 |
"_view_module": "@jupyter-widgets/base", |
|
|
459 |
"_view_module_version": "1.2.0", |
|
|
460 |
"_view_name": "LayoutView", |
|
|
461 |
"align_content": null, |
|
|
462 |
"align_items": null, |
|
|
463 |
"align_self": null, |
|
|
464 |
"border": null, |
|
|
465 |
"bottom": null, |
|
|
466 |
"display": null, |
|
|
467 |
"flex": null, |
|
|
468 |
"flex_flow": null, |
|
|
469 |
"grid_area": null, |
|
|
470 |
"grid_auto_columns": null, |
|
|
471 |
"grid_auto_flow": null, |
|
|
472 |
"grid_auto_rows": null, |
|
|
473 |
"grid_column": null, |
|
|
474 |
"grid_gap": null, |
|
|
475 |
"grid_row": null, |
|
|
476 |
"grid_template_areas": null, |
|
|
477 |
"grid_template_columns": null, |
|
|
478 |
"grid_template_rows": null, |
|
|
479 |
"height": null, |
|
|
480 |
"justify_content": null, |
|
|
481 |
"justify_items": null, |
|
|
482 |
"left": null, |
|
|
483 |
"margin": null, |
|
|
484 |
"max_height": null, |
|
|
485 |
"max_width": null, |
|
|
486 |
"min_height": null, |
|
|
487 |
"min_width": null, |
|
|
488 |
"object_fit": null, |
|
|
489 |
"object_position": null, |
|
|
490 |
"order": null, |
|
|
491 |
"overflow": null, |
|
|
492 |
"overflow_x": null, |
|
|
493 |
"overflow_y": null, |
|
|
494 |
"padding": null, |
|
|
495 |
"right": null, |
|
|
496 |
"top": null, |
|
|
497 |
"visibility": null, |
|
|
498 |
"width": null |
|
|
499 |
} |
|
|
500 |
}, |
|
|
501 |
"1c84ce5cb56a4c7286c0f5981b8fbd5a": { |
|
|
502 |
"model_module": "@jupyter-widgets/base", |
|
|
503 |
"model_name": "LayoutModel", |
|
|
504 |
"model_module_version": "1.2.0", |
|
|
505 |
"state": { |
|
|
506 |
"_model_module": "@jupyter-widgets/base", |
|
|
507 |
"_model_module_version": "1.2.0", |
|
|
508 |
"_model_name": "LayoutModel", |
|
|
509 |
"_view_count": null, |
|
|
510 |
"_view_module": "@jupyter-widgets/base", |
|
|
511 |
"_view_module_version": "1.2.0", |
|
|
512 |
"_view_name": "LayoutView", |
|
|
513 |
"align_content": null, |
|
|
514 |
"align_items": null, |
|
|
515 |
"align_self": null, |
|
|
516 |
"border": null, |
|
|
517 |
"bottom": null, |
|
|
518 |
"display": null, |
|
|
519 |
"flex": null, |
|
|
520 |
"flex_flow": null, |
|
|
521 |
"grid_area": null, |
|
|
522 |
"grid_auto_columns": null, |
|
|
523 |
"grid_auto_flow": null, |
|
|
524 |
"grid_auto_rows": null, |
|
|
525 |
"grid_column": null, |
|
|
526 |
"grid_gap": null, |
|
|
527 |
"grid_row": null, |
|
|
528 |
"grid_template_areas": null, |
|
|
529 |
"grid_template_columns": null, |
|
|
530 |
"grid_template_rows": null, |
|
|
531 |
"height": null, |
|
|
532 |
"justify_content": null, |
|
|
533 |
"justify_items": null, |
|
|
534 |
"left": null, |
|
|
535 |
"margin": null, |
|
|
536 |
"max_height": null, |
|
|
537 |
"max_width": null, |
|
|
538 |
"min_height": null, |
|
|
539 |
"min_width": null, |
|
|
540 |
"object_fit": null, |
|
|
541 |
"object_position": null, |
|
|
542 |
"order": null, |
|
|
543 |
"overflow": null, |
|
|
544 |
"overflow_x": null, |
|
|
545 |
"overflow_y": null, |
|
|
546 |
"padding": null, |
|
|
547 |
"right": null, |
|
|
548 |
"top": null, |
|
|
549 |
"visibility": null, |
|
|
550 |
"width": null |
|
|
551 |
} |
|
|
552 |
}, |
|
|
553 |
"61a01f78b9714e4aa0d869d8e6563e81": { |
|
|
554 |
"model_module": "@jupyter-widgets/controls", |
|
|
555 |
"model_name": "DescriptionStyleModel", |
|
|
556 |
"model_module_version": "1.5.0", |
|
|
557 |
"state": { |
|
|
558 |
"_model_module": "@jupyter-widgets/controls", |
|
|
559 |
"_model_module_version": "1.5.0", |
|
|
560 |
"_model_name": "DescriptionStyleModel", |
|
|
561 |
"_view_count": null, |
|
|
562 |
"_view_module": "@jupyter-widgets/base", |
|
|
563 |
"_view_module_version": "1.2.0", |
|
|
564 |
"_view_name": "StyleView", |
|
|
565 |
"description_width": "" |
|
|
566 |
} |
|
|
567 |
}, |
|
|
568 |
"180753d93be944e98c47bba836397ba0": { |
|
|
569 |
"model_module": "@jupyter-widgets/base", |
|
|
570 |
"model_name": "LayoutModel", |
|
|
571 |
"model_module_version": "1.2.0", |
|
|
572 |
"state": { |
|
|
573 |
"_model_module": "@jupyter-widgets/base", |
|
|
574 |
"_model_module_version": "1.2.0", |
|
|
575 |
"_model_name": "LayoutModel", |
|
|
576 |
"_view_count": null, |
|
|
577 |
"_view_module": "@jupyter-widgets/base", |
|
|
578 |
"_view_module_version": "1.2.0", |
|
|
579 |
"_view_name": "LayoutView", |
|
|
580 |
"align_content": null, |
|
|
581 |
"align_items": null, |
|
|
582 |
"align_self": null, |
|
|
583 |
"border": null, |
|
|
584 |
"bottom": null, |
|
|
585 |
"display": null, |
|
|
586 |
"flex": null, |
|
|
587 |
"flex_flow": null, |
|
|
588 |
"grid_area": null, |
|
|
589 |
"grid_auto_columns": null, |
|
|
590 |
"grid_auto_flow": null, |
|
|
591 |
"grid_auto_rows": null, |
|
|
592 |
"grid_column": null, |
|
|
593 |
"grid_gap": null, |
|
|
594 |
"grid_row": null, |
|
|
595 |
"grid_template_areas": null, |
|
|
596 |
"grid_template_columns": null, |
|
|
597 |
"grid_template_rows": null, |
|
|
598 |
"height": null, |
|
|
599 |
"justify_content": null, |
|
|
600 |
"justify_items": null, |
|
|
601 |
"left": null, |
|
|
602 |
"margin": null, |
|
|
603 |
"max_height": null, |
|
|
604 |
"max_width": null, |
|
|
605 |
"min_height": null, |
|
|
606 |
"min_width": null, |
|
|
607 |
"object_fit": null, |
|
|
608 |
"object_position": null, |
|
|
609 |
"order": null, |
|
|
610 |
"overflow": null, |
|
|
611 |
"overflow_x": null, |
|
|
612 |
"overflow_y": null, |
|
|
613 |
"padding": null, |
|
|
614 |
"right": null, |
|
|
615 |
"top": null, |
|
|
616 |
"visibility": null, |
|
|
617 |
"width": null |
|
|
618 |
} |
|
|
619 |
}, |
|
|
620 |
"db137743dfc24b6b84c6c15bcd5b5766": { |
|
|
621 |
"model_module": "@jupyter-widgets/controls", |
|
|
622 |
"model_name": "ProgressStyleModel", |
|
|
623 |
"model_module_version": "1.5.0", |
|
|
624 |
"state": { |
|
|
625 |
"_model_module": "@jupyter-widgets/controls", |
|
|
626 |
"_model_module_version": "1.5.0", |
|
|
627 |
"_model_name": "ProgressStyleModel", |
|
|
628 |
"_view_count": null, |
|
|
629 |
"_view_module": "@jupyter-widgets/base", |
|
|
630 |
"_view_module_version": "1.2.0", |
|
|
631 |
"_view_name": "StyleView", |
|
|
632 |
"bar_color": null, |
|
|
633 |
"description_width": "" |
|
|
634 |
} |
|
|
635 |
}, |
|
|
636 |
"16f88feb88fc43b5b381521d91b02150": { |
|
|
637 |
"model_module": "@jupyter-widgets/base", |
|
|
638 |
"model_name": "LayoutModel", |
|
|
639 |
"model_module_version": "1.2.0", |
|
|
640 |
"state": { |
|
|
641 |
"_model_module": "@jupyter-widgets/base", |
|
|
642 |
"_model_module_version": "1.2.0", |
|
|
643 |
"_model_name": "LayoutModel", |
|
|
644 |
"_view_count": null, |
|
|
645 |
"_view_module": "@jupyter-widgets/base", |
|
|
646 |
"_view_module_version": "1.2.0", |
|
|
647 |
"_view_name": "LayoutView", |
|
|
648 |
"align_content": null, |
|
|
649 |
"align_items": null, |
|
|
650 |
"align_self": null, |
|
|
651 |
"border": null, |
|
|
652 |
"bottom": null, |
|
|
653 |
"display": null, |
|
|
654 |
"flex": null, |
|
|
655 |
"flex_flow": null, |
|
|
656 |
"grid_area": null, |
|
|
657 |
"grid_auto_columns": null, |
|
|
658 |
"grid_auto_flow": null, |
|
|
659 |
"grid_auto_rows": null, |
|
|
660 |
"grid_column": null, |
|
|
661 |
"grid_gap": null, |
|
|
662 |
"grid_row": null, |
|
|
663 |
"grid_template_areas": null, |
|
|
664 |
"grid_template_columns": null, |
|
|
665 |
"grid_template_rows": null, |
|
|
666 |
"height": null, |
|
|
667 |
"justify_content": null, |
|
|
668 |
"justify_items": null, |
|
|
669 |
"left": null, |
|
|
670 |
"margin": null, |
|
|
671 |
"max_height": null, |
|
|
672 |
"max_width": null, |
|
|
673 |
"min_height": null, |
|
|
674 |
"min_width": null, |
|
|
675 |
"object_fit": null, |
|
|
676 |
"object_position": null, |
|
|
677 |
"order": null, |
|
|
678 |
"overflow": null, |
|
|
679 |
"overflow_x": null, |
|
|
680 |
"overflow_y": null, |
|
|
681 |
"padding": null, |
|
|
682 |
"right": null, |
|
|
683 |
"top": null, |
|
|
684 |
"visibility": null, |
|
|
685 |
"width": null |
|
|
686 |
} |
|
|
687 |
}, |
|
|
688 |
"9b2a4006744a4940aa64fd9e41d62d4e": { |
|
|
689 |
"model_module": "@jupyter-widgets/controls", |
|
|
690 |
"model_name": "DescriptionStyleModel", |
|
|
691 |
"model_module_version": "1.5.0", |
|
|
692 |
"state": { |
|
|
693 |
"_model_module": "@jupyter-widgets/controls", |
|
|
694 |
"_model_module_version": "1.5.0", |
|
|
695 |
"_model_name": "DescriptionStyleModel", |
|
|
696 |
"_view_count": null, |
|
|
697 |
"_view_module": "@jupyter-widgets/base", |
|
|
698 |
"_view_module_version": "1.2.0", |
|
|
699 |
"_view_name": "StyleView", |
|
|
700 |
"description_width": "" |
|
|
701 |
} |
|
|
702 |
}, |
|
|
703 |
"d55048b2772b47eab27637e9aa42d4dc": { |
|
|
704 |
"model_module": "@jupyter-widgets/controls", |
|
|
705 |
"model_name": "HBoxModel", |
|
|
706 |
"model_module_version": "1.5.0", |
|
|
707 |
"state": { |
|
|
708 |
"_dom_classes": [], |
|
|
709 |
"_model_module": "@jupyter-widgets/controls", |
|
|
710 |
"_model_module_version": "1.5.0", |
|
|
711 |
"_model_name": "HBoxModel", |
|
|
712 |
"_view_count": null, |
|
|
713 |
"_view_module": "@jupyter-widgets/controls", |
|
|
714 |
"_view_module_version": "1.5.0", |
|
|
715 |
"_view_name": "HBoxView", |
|
|
716 |
"box_style": "", |
|
|
717 |
"children": [ |
|
|
718 |
"IPY_MODEL_a70574b040b14832abb25d2eb040fb0a", |
|
|
719 |
"IPY_MODEL_e5c3bf5ade9a405094a1673bc2beb795", |
|
|
720 |
"IPY_MODEL_3d7c0e5ba179442eb417435ff72ae85a" |
|
|
721 |
], |
|
|
722 |
"layout": "IPY_MODEL_b8aea249ccf04a619c1e926e7b6b6bbe" |
|
|
723 |
} |
|
|
724 |
}, |
|
|
725 |
"a70574b040b14832abb25d2eb040fb0a": { |
|
|
726 |
"model_module": "@jupyter-widgets/controls", |
|
|
727 |
"model_name": "HTMLModel", |
|
|
728 |
"model_module_version": "1.5.0", |
|
|
729 |
"state": { |
|
|
730 |
"_dom_classes": [], |
|
|
731 |
"_model_module": "@jupyter-widgets/controls", |
|
|
732 |
"_model_module_version": "1.5.0", |
|
|
733 |
"_model_name": "HTMLModel", |
|
|
734 |
"_view_count": null, |
|
|
735 |
"_view_module": "@jupyter-widgets/controls", |
|
|
736 |
"_view_module_version": "1.5.0", |
|
|
737 |
"_view_name": "HTMLView", |
|
|
738 |
"description": "", |
|
|
739 |
"description_tooltip": null, |
|
|
740 |
"layout": "IPY_MODEL_73554830b9524f1b8b8714ff33c3b8e8", |
|
|
741 |
"placeholder": "", |
|
|
742 |
"style": "IPY_MODEL_15bf509be6d946e187e14fd6854950a9", |
|
|
743 |
"value": "vocab.txt: 100%" |
|
|
744 |
} |
|
|
745 |
}, |
|
|
746 |
"e5c3bf5ade9a405094a1673bc2beb795": { |
|
|
747 |
"model_module": "@jupyter-widgets/controls", |
|
|
748 |
"model_name": "FloatProgressModel", |
|
|
749 |
"model_module_version": "1.5.0", |
|
|
750 |
"state": { |
|
|
751 |
"_dom_classes": [], |
|
|
752 |
"_model_module": "@jupyter-widgets/controls", |
|
|
753 |
"_model_module_version": "1.5.0", |
|
|
754 |
"_model_name": "FloatProgressModel", |
|
|
755 |
"_view_count": null, |
|
|
756 |
"_view_module": "@jupyter-widgets/controls", |
|
|
757 |
"_view_module_version": "1.5.0", |
|
|
758 |
"_view_name": "ProgressView", |
|
|
759 |
"bar_style": "success", |
|
|
760 |
"description": "", |
|
|
761 |
"description_tooltip": null, |
|
|
762 |
"layout": "IPY_MODEL_65855073adcd4434b8e9af65ecc59915", |
|
|
763 |
"max": 226150, |
|
|
764 |
"min": 0, |
|
|
765 |
"orientation": "horizontal", |
|
|
766 |
"style": "IPY_MODEL_f3485f93a7374df49cc200d18e9ac49e", |
|
|
767 |
"value": 226150 |
|
|
768 |
} |
|
|
769 |
}, |
|
|
770 |
"3d7c0e5ba179442eb417435ff72ae85a": { |
|
|
771 |
"model_module": "@jupyter-widgets/controls", |
|
|
772 |
"model_name": "HTMLModel", |
|
|
773 |
"model_module_version": "1.5.0", |
|
|
774 |
"state": { |
|
|
775 |
"_dom_classes": [], |
|
|
776 |
"_model_module": "@jupyter-widgets/controls", |
|
|
777 |
"_model_module_version": "1.5.0", |
|
|
778 |
"_model_name": "HTMLModel", |
|
|
779 |
"_view_count": null, |
|
|
780 |
"_view_module": "@jupyter-widgets/controls", |
|
|
781 |
"_view_module_version": "1.5.0", |
|
|
782 |
"_view_name": "HTMLView", |
|
|
783 |
"description": "", |
|
|
784 |
"description_tooltip": null, |
|
|
785 |
"layout": "IPY_MODEL_53d6422031bf48dab34a3b47e237da93", |
|
|
786 |
"placeholder": "", |
|
|
787 |
"style": "IPY_MODEL_1ebb572142e8490199aa8ffce39df341", |
|
|
788 |
"value": " 226k/226k [00:00<00:00, 3.21MB/s]" |
|
|
789 |
} |
|
|
790 |
}, |
|
|
791 |
"b8aea249ccf04a619c1e926e7b6b6bbe": { |
|
|
792 |
"model_module": "@jupyter-widgets/base", |
|
|
793 |
"model_name": "LayoutModel", |
|
|
794 |
"model_module_version": "1.2.0", |
|
|
795 |
"state": { |
|
|
796 |
"_model_module": "@jupyter-widgets/base", |
|
|
797 |
"_model_module_version": "1.2.0", |
|
|
798 |
"_model_name": "LayoutModel", |
|
|
799 |
"_view_count": null, |
|
|
800 |
"_view_module": "@jupyter-widgets/base", |
|
|
801 |
"_view_module_version": "1.2.0", |
|
|
802 |
"_view_name": "LayoutView", |
|
|
803 |
"align_content": null, |
|
|
804 |
"align_items": null, |
|
|
805 |
"align_self": null, |
|
|
806 |
"border": null, |
|
|
807 |
"bottom": null, |
|
|
808 |
"display": null, |
|
|
809 |
"flex": null, |
|
|
810 |
"flex_flow": null, |
|
|
811 |
"grid_area": null, |
|
|
812 |
"grid_auto_columns": null, |
|
|
813 |
"grid_auto_flow": null, |
|
|
814 |
"grid_auto_rows": null, |
|
|
815 |
"grid_column": null, |
|
|
816 |
"grid_gap": null, |
|
|
817 |
"grid_row": null, |
|
|
818 |
"grid_template_areas": null, |
|
|
819 |
"grid_template_columns": null, |
|
|
820 |
"grid_template_rows": null, |
|
|
821 |
"height": null, |
|
|
822 |
"justify_content": null, |
|
|
823 |
"justify_items": null, |
|
|
824 |
"left": null, |
|
|
825 |
"margin": null, |
|
|
826 |
"max_height": null, |
|
|
827 |
"max_width": null, |
|
|
828 |
"min_height": null, |
|
|
829 |
"min_width": null, |
|
|
830 |
"object_fit": null, |
|
|
831 |
"object_position": null, |
|
|
832 |
"order": null, |
|
|
833 |
"overflow": null, |
|
|
834 |
"overflow_x": null, |
|
|
835 |
"overflow_y": null, |
|
|
836 |
"padding": null, |
|
|
837 |
"right": null, |
|
|
838 |
"top": null, |
|
|
839 |
"visibility": null, |
|
|
840 |
"width": null |
|
|
841 |
} |
|
|
842 |
}, |
|
|
843 |
"73554830b9524f1b8b8714ff33c3b8e8": { |
|
|
844 |
"model_module": "@jupyter-widgets/base", |
|
|
845 |
"model_name": "LayoutModel", |
|
|
846 |
"model_module_version": "1.2.0", |
|
|
847 |
"state": { |
|
|
848 |
"_model_module": "@jupyter-widgets/base", |
|
|
849 |
"_model_module_version": "1.2.0", |
|
|
850 |
"_model_name": "LayoutModel", |
|
|
851 |
"_view_count": null, |
|
|
852 |
"_view_module": "@jupyter-widgets/base", |
|
|
853 |
"_view_module_version": "1.2.0", |
|
|
854 |
"_view_name": "LayoutView", |
|
|
855 |
"align_content": null, |
|
|
856 |
"align_items": null, |
|
|
857 |
"align_self": null, |
|
|
858 |
"border": null, |
|
|
859 |
"bottom": null, |
|
|
860 |
"display": null, |
|
|
861 |
"flex": null, |
|
|
862 |
"flex_flow": null, |
|
|
863 |
"grid_area": null, |
|
|
864 |
"grid_auto_columns": null, |
|
|
865 |
"grid_auto_flow": null, |
|
|
866 |
"grid_auto_rows": null, |
|
|
867 |
"grid_column": null, |
|
|
868 |
"grid_gap": null, |
|
|
869 |
"grid_row": null, |
|
|
870 |
"grid_template_areas": null, |
|
|
871 |
"grid_template_columns": null, |
|
|
872 |
"grid_template_rows": null, |
|
|
873 |
"height": null, |
|
|
874 |
"justify_content": null, |
|
|
875 |
"justify_items": null, |
|
|
876 |
"left": null, |
|
|
877 |
"margin": null, |
|
|
878 |
"max_height": null, |
|
|
879 |
"max_width": null, |
|
|
880 |
"min_height": null, |
|
|
881 |
"min_width": null, |
|
|
882 |
"object_fit": null, |
|
|
883 |
"object_position": null, |
|
|
884 |
"order": null, |
|
|
885 |
"overflow": null, |
|
|
886 |
"overflow_x": null, |
|
|
887 |
"overflow_y": null, |
|
|
888 |
"padding": null, |
|
|
889 |
"right": null, |
|
|
890 |
"top": null, |
|
|
891 |
"visibility": null, |
|
|
892 |
"width": null |
|
|
893 |
} |
|
|
894 |
}, |
|
|
895 |
"15bf509be6d946e187e14fd6854950a9": { |
|
|
896 |
"model_module": "@jupyter-widgets/controls", |
|
|
897 |
"model_name": "DescriptionStyleModel", |
|
|
898 |
"model_module_version": "1.5.0", |
|
|
899 |
"state": { |
|
|
900 |
"_model_module": "@jupyter-widgets/controls", |
|
|
901 |
"_model_module_version": "1.5.0", |
|
|
902 |
"_model_name": "DescriptionStyleModel", |
|
|
903 |
"_view_count": null, |
|
|
904 |
"_view_module": "@jupyter-widgets/base", |
|
|
905 |
"_view_module_version": "1.2.0", |
|
|
906 |
"_view_name": "StyleView", |
|
|
907 |
"description_width": "" |
|
|
908 |
} |
|
|
909 |
}, |
|
|
910 |
"65855073adcd4434b8e9af65ecc59915": { |
|
|
911 |
"model_module": "@jupyter-widgets/base", |
|
|
912 |
"model_name": "LayoutModel", |
|
|
913 |
"model_module_version": "1.2.0", |
|
|
914 |
"state": { |
|
|
915 |
"_model_module": "@jupyter-widgets/base", |
|
|
916 |
"_model_module_version": "1.2.0", |
|
|
917 |
"_model_name": "LayoutModel", |
|
|
918 |
"_view_count": null, |
|
|
919 |
"_view_module": "@jupyter-widgets/base", |
|
|
920 |
"_view_module_version": "1.2.0", |
|
|
921 |
"_view_name": "LayoutView", |
|
|
922 |
"align_content": null, |
|
|
923 |
"align_items": null, |
|
|
924 |
"align_self": null, |
|
|
925 |
"border": null, |
|
|
926 |
"bottom": null, |
|
|
927 |
"display": null, |
|
|
928 |
"flex": null, |
|
|
929 |
"flex_flow": null, |
|
|
930 |
"grid_area": null, |
|
|
931 |
"grid_auto_columns": null, |
|
|
932 |
"grid_auto_flow": null, |
|
|
933 |
"grid_auto_rows": null, |
|
|
934 |
"grid_column": null, |
|
|
935 |
"grid_gap": null, |
|
|
936 |
"grid_row": null, |
|
|
937 |
"grid_template_areas": null, |
|
|
938 |
"grid_template_columns": null, |
|
|
939 |
"grid_template_rows": null, |
|
|
940 |
"height": null, |
|
|
941 |
"justify_content": null, |
|
|
942 |
"justify_items": null, |
|
|
943 |
"left": null, |
|
|
944 |
"margin": null, |
|
|
945 |
"max_height": null, |
|
|
946 |
"max_width": null, |
|
|
947 |
"min_height": null, |
|
|
948 |
"min_width": null, |
|
|
949 |
"object_fit": null, |
|
|
950 |
"object_position": null, |
|
|
951 |
"order": null, |
|
|
952 |
"overflow": null, |
|
|
953 |
"overflow_x": null, |
|
|
954 |
"overflow_y": null, |
|
|
955 |
"padding": null, |
|
|
956 |
"right": null, |
|
|
957 |
"top": null, |
|
|
958 |
"visibility": null, |
|
|
959 |
"width": null |
|
|
960 |
} |
|
|
961 |
}, |
|
|
962 |
"f3485f93a7374df49cc200d18e9ac49e": { |
|
|
963 |
"model_module": "@jupyter-widgets/controls", |
|
|
964 |
"model_name": "ProgressStyleModel", |
|
|
965 |
"model_module_version": "1.5.0", |
|
|
966 |
"state": { |
|
|
967 |
"_model_module": "@jupyter-widgets/controls", |
|
|
968 |
"_model_module_version": "1.5.0", |
|
|
969 |
"_model_name": "ProgressStyleModel", |
|
|
970 |
"_view_count": null, |
|
|
971 |
"_view_module": "@jupyter-widgets/base", |
|
|
972 |
"_view_module_version": "1.2.0", |
|
|
973 |
"_view_name": "StyleView", |
|
|
974 |
"bar_color": null, |
|
|
975 |
"description_width": "" |
|
|
976 |
} |
|
|
977 |
}, |
|
|
978 |
"53d6422031bf48dab34a3b47e237da93": { |
|
|
979 |
"model_module": "@jupyter-widgets/base", |
|
|
980 |
"model_name": "LayoutModel", |
|
|
981 |
"model_module_version": "1.2.0", |
|
|
982 |
"state": { |
|
|
983 |
"_model_module": "@jupyter-widgets/base", |
|
|
984 |
"_model_module_version": "1.2.0", |
|
|
985 |
"_model_name": "LayoutModel", |
|
|
986 |
"_view_count": null, |
|
|
987 |
"_view_module": "@jupyter-widgets/base", |
|
|
988 |
"_view_module_version": "1.2.0", |
|
|
989 |
"_view_name": "LayoutView", |
|
|
990 |
"align_content": null, |
|
|
991 |
"align_items": null, |
|
|
992 |
"align_self": null, |
|
|
993 |
"border": null, |
|
|
994 |
"bottom": null, |
|
|
995 |
"display": null, |
|
|
996 |
"flex": null, |
|
|
997 |
"flex_flow": null, |
|
|
998 |
"grid_area": null, |
|
|
999 |
"grid_auto_columns": null, |
|
|
1000 |
"grid_auto_flow": null, |
|
|
1001 |
"grid_auto_rows": null, |
|
|
1002 |
"grid_column": null, |
|
|
1003 |
"grid_gap": null, |
|
|
1004 |
"grid_row": null, |
|
|
1005 |
"grid_template_areas": null, |
|
|
1006 |
"grid_template_columns": null, |
|
|
1007 |
"grid_template_rows": null, |
|
|
1008 |
"height": null, |
|
|
1009 |
"justify_content": null, |
|
|
1010 |
"justify_items": null, |
|
|
1011 |
"left": null, |
|
|
1012 |
"margin": null, |
|
|
1013 |
"max_height": null, |
|
|
1014 |
"max_width": null, |
|
|
1015 |
"min_height": null, |
|
|
1016 |
"min_width": null, |
|
|
1017 |
"object_fit": null, |
|
|
1018 |
"object_position": null, |
|
|
1019 |
"order": null, |
|
|
1020 |
"overflow": null, |
|
|
1021 |
"overflow_x": null, |
|
|
1022 |
"overflow_y": null, |
|
|
1023 |
"padding": null, |
|
|
1024 |
"right": null, |
|
|
1025 |
"top": null, |
|
|
1026 |
"visibility": null, |
|
|
1027 |
"width": null |
|
|
1028 |
} |
|
|
1029 |
}, |
|
|
1030 |
"1ebb572142e8490199aa8ffce39df341": { |
|
|
1031 |
"model_module": "@jupyter-widgets/controls", |
|
|
1032 |
"model_name": "DescriptionStyleModel", |
|
|
1033 |
"model_module_version": "1.5.0", |
|
|
1034 |
"state": { |
|
|
1035 |
"_model_module": "@jupyter-widgets/controls", |
|
|
1036 |
"_model_module_version": "1.5.0", |
|
|
1037 |
"_model_name": "DescriptionStyleModel", |
|
|
1038 |
"_view_count": null, |
|
|
1039 |
"_view_module": "@jupyter-widgets/base", |
|
|
1040 |
"_view_module_version": "1.2.0", |
|
|
1041 |
"_view_name": "StyleView", |
|
|
1042 |
"description_width": "" |
|
|
1043 |
} |
|
|
1044 |
}, |
|
|
1045 |
"efe460065f0448acbf75200543187bb0": { |
|
|
1046 |
"model_module": "@jupyter-widgets/controls", |
|
|
1047 |
"model_name": "HBoxModel", |
|
|
1048 |
"model_module_version": "1.5.0", |
|
|
1049 |
"state": { |
|
|
1050 |
"_dom_classes": [], |
|
|
1051 |
"_model_module": "@jupyter-widgets/controls", |
|
|
1052 |
"_model_module_version": "1.5.0", |
|
|
1053 |
"_model_name": "HBoxModel", |
|
|
1054 |
"_view_count": null, |
|
|
1055 |
"_view_module": "@jupyter-widgets/controls", |
|
|
1056 |
"_view_module_version": "1.5.0", |
|
|
1057 |
"_view_name": "HBoxView", |
|
|
1058 |
"box_style": "", |
|
|
1059 |
"children": [ |
|
|
1060 |
"IPY_MODEL_0e6e8bc125874564bb46431ac85524dc", |
|
|
1061 |
"IPY_MODEL_30d5690beb7341dc8b37de5a1e0812ab", |
|
|
1062 |
"IPY_MODEL_e8c76754ea784709bae0c59843c61279" |
|
|
1063 |
], |
|
|
1064 |
"layout": "IPY_MODEL_67690c975154491b96ed9091db152a0f" |
|
|
1065 |
} |
|
|
1066 |
}, |
|
|
1067 |
"0e6e8bc125874564bb46431ac85524dc": { |
|
|
1068 |
"model_module": "@jupyter-widgets/controls", |
|
|
1069 |
"model_name": "HTMLModel", |
|
|
1070 |
"model_module_version": "1.5.0", |
|
|
1071 |
"state": { |
|
|
1072 |
"_dom_classes": [], |
|
|
1073 |
"_model_module": "@jupyter-widgets/controls", |
|
|
1074 |
"_model_module_version": "1.5.0", |
|
|
1075 |
"_model_name": "HTMLModel", |
|
|
1076 |
"_view_count": null, |
|
|
1077 |
"_view_module": "@jupyter-widgets/controls", |
|
|
1078 |
"_view_module_version": "1.5.0", |
|
|
1079 |
"_view_name": "HTMLView", |
|
|
1080 |
"description": "", |
|
|
1081 |
"description_tooltip": null, |
|
|
1082 |
"layout": "IPY_MODEL_74bbdf59962d41059f018e6eab297968", |
|
|
1083 |
"placeholder": "", |
|
|
1084 |
"style": "IPY_MODEL_2c20eb99653d4026ace81ccbe858b479", |
|
|
1085 |
"value": "pytorch_model.bin: 100%" |
|
|
1086 |
} |
|
|
1087 |
}, |
|
|
1088 |
"30d5690beb7341dc8b37de5a1e0812ab": { |
|
|
1089 |
"model_module": "@jupyter-widgets/controls", |
|
|
1090 |
"model_name": "FloatProgressModel", |
|
|
1091 |
"model_module_version": "1.5.0", |
|
|
1092 |
"state": { |
|
|
1093 |
"_dom_classes": [], |
|
|
1094 |
"_model_module": "@jupyter-widgets/controls", |
|
|
1095 |
"_model_module_version": "1.5.0", |
|
|
1096 |
"_model_name": "FloatProgressModel", |
|
|
1097 |
"_view_count": null, |
|
|
1098 |
"_view_module": "@jupyter-widgets/controls", |
|
|
1099 |
"_view_module_version": "1.5.0", |
|
|
1100 |
"_view_name": "ProgressView", |
|
|
1101 |
"bar_style": "success", |
|
|
1102 |
"description": "", |
|
|
1103 |
"description_tooltip": null, |
|
|
1104 |
"layout": "IPY_MODEL_183aee869ce34eaca26f1cf533559caa", |
|
|
1105 |
"max": 440474434, |
|
|
1106 |
"min": 0, |
|
|
1107 |
"orientation": "horizontal", |
|
|
1108 |
"style": "IPY_MODEL_d4622e6a3301483c91a66836d5724e0e", |
|
|
1109 |
"value": 440474434 |
|
|
1110 |
} |
|
|
1111 |
}, |
|
|
1112 |
"e8c76754ea784709bae0c59843c61279": { |
|
|
1113 |
"model_module": "@jupyter-widgets/controls", |
|
|
1114 |
"model_name": "HTMLModel", |
|
|
1115 |
"model_module_version": "1.5.0", |
|
|
1116 |
"state": { |
|
|
1117 |
"_dom_classes": [], |
|
|
1118 |
"_model_module": "@jupyter-widgets/controls", |
|
|
1119 |
"_model_module_version": "1.5.0", |
|
|
1120 |
"_model_name": "HTMLModel", |
|
|
1121 |
"_view_count": null, |
|
|
1122 |
"_view_module": "@jupyter-widgets/controls", |
|
|
1123 |
"_view_module_version": "1.5.0", |
|
|
1124 |
"_view_name": "HTMLView", |
|
|
1125 |
"description": "", |
|
|
1126 |
"description_tooltip": null, |
|
|
1127 |
"layout": "IPY_MODEL_d9c5d0256f534e4cbd82797e1e9f3ccd", |
|
|
1128 |
"placeholder": "", |
|
|
1129 |
"style": "IPY_MODEL_0dc7017260764c9dbdcb9167e7a40b15", |
|
|
1130 |
"value": " 440M/440M [00:04<00:00, 108MB/s]" |
|
|
1131 |
} |
|
|
1132 |
}, |
|
|
1133 |
"67690c975154491b96ed9091db152a0f": { |
|
|
1134 |
"model_module": "@jupyter-widgets/base", |
|
|
1135 |
"model_name": "LayoutModel", |
|
|
1136 |
"model_module_version": "1.2.0", |
|
|
1137 |
"state": { |
|
|
1138 |
"_model_module": "@jupyter-widgets/base", |
|
|
1139 |
"_model_module_version": "1.2.0", |
|
|
1140 |
"_model_name": "LayoutModel", |
|
|
1141 |
"_view_count": null, |
|
|
1142 |
"_view_module": "@jupyter-widgets/base", |
|
|
1143 |
"_view_module_version": "1.2.0", |
|
|
1144 |
"_view_name": "LayoutView", |
|
|
1145 |
"align_content": null, |
|
|
1146 |
"align_items": null, |
|
|
1147 |
"align_self": null, |
|
|
1148 |
"border": null, |
|
|
1149 |
"bottom": null, |
|
|
1150 |
"display": null, |
|
|
1151 |
"flex": null, |
|
|
1152 |
"flex_flow": null, |
|
|
1153 |
"grid_area": null, |
|
|
1154 |
"grid_auto_columns": null, |
|
|
1155 |
"grid_auto_flow": null, |
|
|
1156 |
"grid_auto_rows": null, |
|
|
1157 |
"grid_column": null, |
|
|
1158 |
"grid_gap": null, |
|
|
1159 |
"grid_row": null, |
|
|
1160 |
"grid_template_areas": null, |
|
|
1161 |
"grid_template_columns": null, |
|
|
1162 |
"grid_template_rows": null, |
|
|
1163 |
"height": null, |
|
|
1164 |
"justify_content": null, |
|
|
1165 |
"justify_items": null, |
|
|
1166 |
"left": null, |
|
|
1167 |
"margin": null, |
|
|
1168 |
"max_height": null, |
|
|
1169 |
"max_width": null, |
|
|
1170 |
"min_height": null, |
|
|
1171 |
"min_width": null, |
|
|
1172 |
"object_fit": null, |
|
|
1173 |
"object_position": null, |
|
|
1174 |
"order": null, |
|
|
1175 |
"overflow": null, |
|
|
1176 |
"overflow_x": null, |
|
|
1177 |
"overflow_y": null, |
|
|
1178 |
"padding": null, |
|
|
1179 |
"right": null, |
|
|
1180 |
"top": null, |
|
|
1181 |
"visibility": null, |
|
|
1182 |
"width": null |
|
|
1183 |
} |
|
|
1184 |
}, |
|
|
1185 |
"74bbdf59962d41059f018e6eab297968": { |
|
|
1186 |
"model_module": "@jupyter-widgets/base", |
|
|
1187 |
"model_name": "LayoutModel", |
|
|
1188 |
"model_module_version": "1.2.0", |
|
|
1189 |
"state": { |
|
|
1190 |
"_model_module": "@jupyter-widgets/base", |
|
|
1191 |
"_model_module_version": "1.2.0", |
|
|
1192 |
"_model_name": "LayoutModel", |
|
|
1193 |
"_view_count": null, |
|
|
1194 |
"_view_module": "@jupyter-widgets/base", |
|
|
1195 |
"_view_module_version": "1.2.0", |
|
|
1196 |
"_view_name": "LayoutView", |
|
|
1197 |
"align_content": null, |
|
|
1198 |
"align_items": null, |
|
|
1199 |
"align_self": null, |
|
|
1200 |
"border": null, |
|
|
1201 |
"bottom": null, |
|
|
1202 |
"display": null, |
|
|
1203 |
"flex": null, |
|
|
1204 |
"flex_flow": null, |
|
|
1205 |
"grid_area": null, |
|
|
1206 |
"grid_auto_columns": null, |
|
|
1207 |
"grid_auto_flow": null, |
|
|
1208 |
"grid_auto_rows": null, |
|
|
1209 |
"grid_column": null, |
|
|
1210 |
"grid_gap": null, |
|
|
1211 |
"grid_row": null, |
|
|
1212 |
"grid_template_areas": null, |
|
|
1213 |
"grid_template_columns": null, |
|
|
1214 |
"grid_template_rows": null, |
|
|
1215 |
"height": null, |
|
|
1216 |
"justify_content": null, |
|
|
1217 |
"justify_items": null, |
|
|
1218 |
"left": null, |
|
|
1219 |
"margin": null, |
|
|
1220 |
"max_height": null, |
|
|
1221 |
"max_width": null, |
|
|
1222 |
"min_height": null, |
|
|
1223 |
"min_width": null, |
|
|
1224 |
"object_fit": null, |
|
|
1225 |
"object_position": null, |
|
|
1226 |
"order": null, |
|
|
1227 |
"overflow": null, |
|
|
1228 |
"overflow_x": null, |
|
|
1229 |
"overflow_y": null, |
|
|
1230 |
"padding": null, |
|
|
1231 |
"right": null, |
|
|
1232 |
"top": null, |
|
|
1233 |
"visibility": null, |
|
|
1234 |
"width": null |
|
|
1235 |
} |
|
|
1236 |
}, |
|
|
1237 |
"2c20eb99653d4026ace81ccbe858b479": { |
|
|
1238 |
"model_module": "@jupyter-widgets/controls", |
|
|
1239 |
"model_name": "DescriptionStyleModel", |
|
|
1240 |
"model_module_version": "1.5.0", |
|
|
1241 |
"state": { |
|
|
1242 |
"_model_module": "@jupyter-widgets/controls", |
|
|
1243 |
"_model_module_version": "1.5.0", |
|
|
1244 |
"_model_name": "DescriptionStyleModel", |
|
|
1245 |
"_view_count": null, |
|
|
1246 |
"_view_module": "@jupyter-widgets/base", |
|
|
1247 |
"_view_module_version": "1.2.0", |
|
|
1248 |
"_view_name": "StyleView", |
|
|
1249 |
"description_width": "" |
|
|
1250 |
} |
|
|
1251 |
}, |
|
|
1252 |
"183aee869ce34eaca26f1cf533559caa": { |
|
|
1253 |
"model_module": "@jupyter-widgets/base", |
|
|
1254 |
"model_name": "LayoutModel", |
|
|
1255 |
"model_module_version": "1.2.0", |
|
|
1256 |
"state": { |
|
|
1257 |
"_model_module": "@jupyter-widgets/base", |
|
|
1258 |
"_model_module_version": "1.2.0", |
|
|
1259 |
"_model_name": "LayoutModel", |
|
|
1260 |
"_view_count": null, |
|
|
1261 |
"_view_module": "@jupyter-widgets/base", |
|
|
1262 |
"_view_module_version": "1.2.0", |
|
|
1263 |
"_view_name": "LayoutView", |
|
|
1264 |
"align_content": null, |
|
|
1265 |
"align_items": null, |
|
|
1266 |
"align_self": null, |
|
|
1267 |
"border": null, |
|
|
1268 |
"bottom": null, |
|
|
1269 |
"display": null, |
|
|
1270 |
"flex": null, |
|
|
1271 |
"flex_flow": null, |
|
|
1272 |
"grid_area": null, |
|
|
1273 |
"grid_auto_columns": null, |
|
|
1274 |
"grid_auto_flow": null, |
|
|
1275 |
"grid_auto_rows": null, |
|
|
1276 |
"grid_column": null, |
|
|
1277 |
"grid_gap": null, |
|
|
1278 |
"grid_row": null, |
|
|
1279 |
"grid_template_areas": null, |
|
|
1280 |
"grid_template_columns": null, |
|
|
1281 |
"grid_template_rows": null, |
|
|
1282 |
"height": null, |
|
|
1283 |
"justify_content": null, |
|
|
1284 |
"justify_items": null, |
|
|
1285 |
"left": null, |
|
|
1286 |
"margin": null, |
|
|
1287 |
"max_height": null, |
|
|
1288 |
"max_width": null, |
|
|
1289 |
"min_height": null, |
|
|
1290 |
"min_width": null, |
|
|
1291 |
"object_fit": null, |
|
|
1292 |
"object_position": null, |
|
|
1293 |
"order": null, |
|
|
1294 |
"overflow": null, |
|
|
1295 |
"overflow_x": null, |
|
|
1296 |
"overflow_y": null, |
|
|
1297 |
"padding": null, |
|
|
1298 |
"right": null, |
|
|
1299 |
"top": null, |
|
|
1300 |
"visibility": null, |
|
|
1301 |
"width": null |
|
|
1302 |
} |
|
|
1303 |
}, |
|
|
1304 |
"d4622e6a3301483c91a66836d5724e0e": { |
|
|
1305 |
"model_module": "@jupyter-widgets/controls", |
|
|
1306 |
"model_name": "ProgressStyleModel", |
|
|
1307 |
"model_module_version": "1.5.0", |
|
|
1308 |
"state": { |
|
|
1309 |
"_model_module": "@jupyter-widgets/controls", |
|
|
1310 |
"_model_module_version": "1.5.0", |
|
|
1311 |
"_model_name": "ProgressStyleModel", |
|
|
1312 |
"_view_count": null, |
|
|
1313 |
"_view_module": "@jupyter-widgets/base", |
|
|
1314 |
"_view_module_version": "1.2.0", |
|
|
1315 |
"_view_name": "StyleView", |
|
|
1316 |
"bar_color": null, |
|
|
1317 |
"description_width": "" |
|
|
1318 |
} |
|
|
1319 |
}, |
|
|
1320 |
"d9c5d0256f534e4cbd82797e1e9f3ccd": { |
|
|
1321 |
"model_module": "@jupyter-widgets/base", |
|
|
1322 |
"model_name": "LayoutModel", |
|
|
1323 |
"model_module_version": "1.2.0", |
|
|
1324 |
"state": { |
|
|
1325 |
"_model_module": "@jupyter-widgets/base", |
|
|
1326 |
"_model_module_version": "1.2.0", |
|
|
1327 |
"_model_name": "LayoutModel", |
|
|
1328 |
"_view_count": null, |
|
|
1329 |
"_view_module": "@jupyter-widgets/base", |
|
|
1330 |
"_view_module_version": "1.2.0", |
|
|
1331 |
"_view_name": "LayoutView", |
|
|
1332 |
"align_content": null, |
|
|
1333 |
"align_items": null, |
|
|
1334 |
"align_self": null, |
|
|
1335 |
"border": null, |
|
|
1336 |
"bottom": null, |
|
|
1337 |
"display": null, |
|
|
1338 |
"flex": null, |
|
|
1339 |
"flex_flow": null, |
|
|
1340 |
"grid_area": null, |
|
|
1341 |
"grid_auto_columns": null, |
|
|
1342 |
"grid_auto_flow": null, |
|
|
1343 |
"grid_auto_rows": null, |
|
|
1344 |
"grid_column": null, |
|
|
1345 |
"grid_gap": null, |
|
|
1346 |
"grid_row": null, |
|
|
1347 |
"grid_template_areas": null, |
|
|
1348 |
"grid_template_columns": null, |
|
|
1349 |
"grid_template_rows": null, |
|
|
1350 |
"height": null, |
|
|
1351 |
"justify_content": null, |
|
|
1352 |
"justify_items": null, |
|
|
1353 |
"left": null, |
|
|
1354 |
"margin": null, |
|
|
1355 |
"max_height": null, |
|
|
1356 |
"max_width": null, |
|
|
1357 |
"min_height": null, |
|
|
1358 |
"min_width": null, |
|
|
1359 |
"object_fit": null, |
|
|
1360 |
"object_position": null, |
|
|
1361 |
"order": null, |
|
|
1362 |
"overflow": null, |
|
|
1363 |
"overflow_x": null, |
|
|
1364 |
"overflow_y": null, |
|
|
1365 |
"padding": null, |
|
|
1366 |
"right": null, |
|
|
1367 |
"top": null, |
|
|
1368 |
"visibility": null, |
|
|
1369 |
"width": null |
|
|
1370 |
} |
|
|
1371 |
}, |
|
|
1372 |
"0dc7017260764c9dbdcb9167e7a40b15": { |
|
|
1373 |
"model_module": "@jupyter-widgets/controls", |
|
|
1374 |
"model_name": "DescriptionStyleModel", |
|
|
1375 |
"model_module_version": "1.5.0", |
|
|
1376 |
"state": { |
|
|
1377 |
"_model_module": "@jupyter-widgets/controls", |
|
|
1378 |
"_model_module_version": "1.5.0", |
|
|
1379 |
"_model_name": "DescriptionStyleModel", |
|
|
1380 |
"_view_count": null, |
|
|
1381 |
"_view_module": "@jupyter-widgets/base", |
|
|
1382 |
"_view_module_version": "1.2.0", |
|
|
1383 |
"_view_name": "StyleView", |
|
|
1384 |
"description_width": "" |
|
|
1385 |
} |
|
|
1386 |
} |
|
|
1387 |
} |
|
|
1388 |
} |
|
|
1389 |
}, |
|
|
1390 |
"cells": [ |
|
|
1391 |
{ |
|
|
1392 |
"cell_type": "code", |
|
|
1393 |
"execution_count": null, |
|
|
1394 |
"metadata": { |
|
|
1395 |
"colab": { |
|
|
1396 |
"base_uri": "https://localhost:8080/" |
|
|
1397 |
}, |
|
|
1398 |
"id": "yBhXMsR3OE85", |
|
|
1399 |
"outputId": "f586f5e1-50a3-446a-8258-0dde1c57e636" |
|
|
1400 |
}, |
|
|
1401 |
"outputs": [ |
|
|
1402 |
{ |
|
|
1403 |
"output_type": "stream", |
|
|
1404 |
"name": "stderr", |
|
|
1405 |
"text": [ |
|
|
1406 |
"<ipython-input-1-8174d4ba0823>:8: DtypeWarning: Columns (0,18,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,765,767,768,769,771,772,773,775,776) have mixed types. Specify dtype option on import or set low_memory=False.\n", |
|
|
1407 |
" df = pd.read_csv(\"/content/usecase_2_.csv\", quoting=csv.QUOTE_MINIMAL, escapechar='\\\\', on_bad_lines='skip')\n" |
|
|
1408 |
] |
|
|
1409 |
}, |
|
|
1410 |
{ |
|
|
1411 |
"output_type": "stream", |
|
|
1412 |
"name": "stdout", |
|
|
1413 |
"text": [ |
|
|
1414 |
"Successfully read the CSV with skipped lines.\n", |
|
|
1415 |
"Check the problematic rows (if any) by inspecting the original CSV file around row 785.\n" |
|
|
1416 |
] |
|
|
1417 |
} |
|
|
1418 |
], |
|
|
1419 |
"source": [ |
|
|
1420 |
"import pandas as pd\n", |
|
|
1421 |
"import csv\n", |
|
|
1422 |
"\n", |
|
|
1423 |
"# Use csv.QUOTE_MINIMAL to only quote where necessary\n", |
|
|
1424 |
"# Try to read the file with error_bad_lines=False to skip problematic lines\n", |
|
|
1425 |
"# and see if you can identify the issue in the skipped rows\n", |
|
|
1426 |
"try:\n", |
|
|
1427 |
" df = pd.read_csv(\"/content/usecase_2_.csv\", quoting=csv.QUOTE_MINIMAL, escapechar='\\\\', on_bad_lines='skip')\n", |
|
|
1428 |
" print(\"Successfully read the CSV with skipped lines.\")\n", |
|
|
1429 |
" print(\"Check the problematic rows (if any) by inspecting the original CSV file around row 785.\")\n", |
|
|
1430 |
"except pd.errors.ParserError as e:\n", |
|
|
1431 |
" print(f\"Error: {e}\")\n", |
|
|
1432 |
" print(\"The on_bad_lines='skip' approach also failed. This likely indicates a more severe issue within the CSV file structure.\")\n", |
|
|
1433 |
" print(\"Possible solutions:\")\n", |
|
|
1434 |
" print(\" 1. Manually inspect row 785 and the surrounding rows in your CSV file for unescaped quotes or incorrect line endings.\")\n", |
|
|
1435 |
" print(\" 2. If you have control over the CSV generation process, ensure proper escaping of quotes and consistent line endings.\")\n", |
|
|
1436 |
" print(\" 3. Try using a different text editor to open the CSV file and check for any hidden characters or encoding issues.\")\n", |
|
|
1437 |
" print(\" 4. If the file is large, consider processing it in smaller chunks to identify the specific area causing the problem.\")\n", |
|
|
1438 |
"# escapechar is used to escape special characters (like quotes) within the fields.\n", |
|
|
1439 |
"# Using backslash here is a common choice." |
|
|
1440 |
] |
|
|
1441 |
}, |
|
|
1442 |
{ |
|
|
1443 |
"cell_type": "code", |
|
|
1444 |
"source": [ |
|
|
1445 |
"df = df.loc[:, ~df.columns.str.contains('^Unnamed')]" |
|
|
1446 |
], |
|
|
1447 |
"metadata": { |
|
|
1448 |
"id": "ONTOsvE2P2hT" |
|
|
1449 |
}, |
|
|
1450 |
"execution_count": null, |
|
|
1451 |
"outputs": [] |
|
|
1452 |
}, |
|
|
1453 |
{ |
|
|
1454 |
"cell_type": "code", |
|
|
1455 |
"source": [ |
|
|
1456 |
"print(df.head())" |
|
|
1457 |
], |
|
|
1458 |
"metadata": { |
|
|
1459 |
"colab": { |
|
|
1460 |
"base_uri": "https://localhost:8080/" |
|
|
1461 |
}, |
|
|
1462 |
"id": "0ICHZF9HP4vp", |
|
|
1463 |
"outputId": "4fdf71c5-22f2-44c7-b559-8f40b5d8b75b" |
|
|
1464 |
}, |
|
|
1465 |
"execution_count": null, |
|
|
1466 |
"outputs": [ |
|
|
1467 |
{ |
|
|
1468 |
"output_type": "stream", |
|
|
1469 |
"name": "stdout", |
|
|
1470 |
"text": [ |
|
|
1471 |
" NCT Number Study Title \\\n", |
|
|
1472 |
"0 NCT04841499 Effects of a Seven-day BASIS™ Supplementation ... \n", |
|
|
1473 |
"1 NCT03020641 Peritoneal Damage in Laparoscopic Surgery \n", |
|
|
1474 |
"2 NCT03727620 Doxycycline in the Treatment of Aggressive Per... \n", |
|
|
1475 |
"3 NCT03162926 A Safety and Tolerability Study of VC-02™ Comb... \n", |
|
|
1476 |
"4 NCT04434313 Treatment of Hemiparetic Gait Impairments Usin... \n", |
|
|
1477 |
"\n", |
|
|
1478 |
" Study URL Acronym Study Status \\\n", |
|
|
1479 |
"0 https://clinicaltrials.gov/study/NCT04841499 NaN COMPLETED \n", |
|
|
1480 |
"1 https://clinicaltrials.gov/study/NCT03020641 NaN COMPLETED \n", |
|
|
1481 |
"2 https://clinicaltrials.gov/study/NCT03727620 NaN COMPLETED \n", |
|
|
1482 |
"3 https://clinicaltrials.gov/study/NCT03162926 NaN COMPLETED \n", |
|
|
1483 |
"4 https://clinicaltrials.gov/study/NCT04434313 NaN COMPLETED \n", |
|
|
1484 |
"\n", |
|
|
1485 |
" Brief Summary Study Results \\\n", |
|
|
1486 |
"0 The purpose of this study is to determine whet... NO \n", |
|
|
1487 |
"1 The investigators hypothesized that applying a... YES \n", |
|
|
1488 |
"2 The aim of the study was to compare the clinic... NO \n", |
|
|
1489 |
"3 The purpose of this trial is to test if VC-02™... NO \n", |
|
|
1490 |
"4 The objective of this research is to investiga... NO \n", |
|
|
1491 |
"\n", |
|
|
1492 |
" Conditions \\\n", |
|
|
1493 |
"0 Menopause \n", |
|
|
1494 |
"1 Peritoneal Damage \n", |
|
|
1495 |
"2 Aggressive Periodontitis \n", |
|
|
1496 |
"3 Type 1 Diabetes Mellitus \n", |
|
|
1497 |
"4 Telemedicine|Gait, Hemiplegic|Gait Disorders, ... \n", |
|
|
1498 |
"\n", |
|
|
1499 |
" Interventions \\\n", |
|
|
1500 |
"0 DRUG: BASIS™ (Crystalline Nicotinamide Ribosid... \n", |
|
|
1501 |
"1 PROCEDURE: Low pressure pneumoperitoneum|PROCE... \n", |
|
|
1502 |
"2 DRUG: amoxicillin plus metronidazole|DRUG: Dox... \n", |
|
|
1503 |
"3 COMBINATION_PRODUCT: VC-02 Combination Product... \n", |
|
|
1504 |
"4 DEVICE: Delivery of iStride™ device gait treat... \n", |
|
|
1505 |
"\n", |
|
|
1506 |
" Primary Outcome Measures ... Age \\\n", |
|
|
1507 |
"0 Production of Estradiol, To determine whether ... ... ADULT, OLDER_ADULT \n", |
|
|
1508 |
"1 Inflammatory Peritoneal Markers, logaritmic le... ... ADULT, OLDER_ADULT \n", |
|
|
1509 |
"2 Decrease of periodontal pockets ≥ 4mm, • Probi... ... CHILD, ADULT \n", |
|
|
1510 |
"3 Incidence of all adverse events reported for s... ... ADULT, OLDER_ADULT \n", |
|
|
1511 |
"4 Feasibility of safely implementing the treatme... ... ADULT, OLDER_ADULT \n", |
|
|
1512 |
"\n", |
|
|
1513 |
" Phases Enrollment Funder Type Study Type \\\n", |
|
|
1514 |
"0 NaN 40 OTHER INTERVENTIONAL \n", |
|
|
1515 |
"1 NaN 100 OTHER INTERVENTIONAL \n", |
|
|
1516 |
"2 PHASE1|PHASE2 24 OTHER INTERVENTIONAL \n", |
|
|
1517 |
"3 PHASE1 3 INDUSTRY INTERVENTIONAL \n", |
|
|
1518 |
"4 NaN 6 INDUSTRY INTERVENTIONAL \n", |
|
|
1519 |
"\n", |
|
|
1520 |
" Study Design Other IDs \\\n", |
|
|
1521 |
"0 Allocation: NA|Intervention Model: SINGLE_GROU... USAH-EH301 \n", |
|
|
1522 |
"1 Allocation: RANDOMIZED|Intervention Model: PAR... A-CGyD-2017 \n", |
|
|
1523 |
"2 Allocation: NON_RANDOMIZED|Intervention Model:... DOXYAPG18 \n", |
|
|
1524 |
"3 Allocation: NA|Intervention Model: SINGLE_GROU... VC02-102 \n", |
|
|
1525 |
"4 Allocation: NA|Intervention Model: SINGLE_GROU... MOT-TELE-2020-04-00 \n", |
|
|
1526 |
"\n", |
|
|
1527 |
" Locations \\\n", |
|
|
1528 |
"0 University of South Alabama, Mobile, Alabama, ... \n", |
|
|
1529 |
"1 Ramon y Cajal Hospital, Madrid, 28034, Spain \n", |
|
|
1530 |
"2 BENRACHADI Latifa, Rabat, Morocco \n", |
|
|
1531 |
"3 University of Alberta, Edmonton, Alberta, Canada \n", |
|
|
1532 |
"4 Moterum Technologies, Inc. (study location: ho... \n", |
|
|
1533 |
"\n", |
|
|
1534 |
" Study Documents Time taken for Enrollment \n", |
|
|
1535 |
"0 NaN 3 \n", |
|
|
1536 |
"1 Study Protocol and Statistical Analysis Plan, ... 27 \n", |
|
|
1537 |
"2 NaN 5 \n", |
|
|
1538 |
"3 NaN 7 \n", |
|
|
1539 |
"4 NaN 8 \n", |
|
|
1540 |
"\n", |
|
|
1541 |
"[5 rows x 25 columns]\n" |
|
|
1542 |
] |
|
|
1543 |
} |
|
|
1544 |
] |
|
|
1545 |
}, |
|
|
1546 |
{ |
|
|
1547 |
"cell_type": "code", |
|
|
1548 |
"source": [ |
|
|
1549 |
"df = df.drop(df.columns[0], axis=1)" |
|
|
1550 |
], |
|
|
1551 |
"metadata": { |
|
|
1552 |
"id": "k-Mb2MQbP60s" |
|
|
1553 |
}, |
|
|
1554 |
"execution_count": null, |
|
|
1555 |
"outputs": [] |
|
|
1556 |
}, |
|
|
1557 |
{ |
|
|
1558 |
"cell_type": "code", |
|
|
1559 |
"source": [ |
|
|
1560 |
"print(df.dtypes)" |
|
|
1561 |
], |
|
|
1562 |
"metadata": { |
|
|
1563 |
"colab": { |
|
|
1564 |
"base_uri": "https://localhost:8080/" |
|
|
1565 |
}, |
|
|
1566 |
"id": "FKeOAM3tP9-M", |
|
|
1567 |
"outputId": "eca2d10b-a590-4ecf-e8a6-17816e8eace6" |
|
|
1568 |
}, |
|
|
1569 |
"execution_count": null, |
|
|
1570 |
"outputs": [ |
|
|
1571 |
{ |
|
|
1572 |
"output_type": "stream", |
|
|
1573 |
"name": "stdout", |
|
|
1574 |
"text": [ |
|
|
1575 |
"Study Title object\n", |
|
|
1576 |
"Study URL object\n", |
|
|
1577 |
"Acronym object\n", |
|
|
1578 |
"Study Status object\n", |
|
|
1579 |
"Brief Summary object\n", |
|
|
1580 |
"Study Results object\n", |
|
|
1581 |
"Conditions object\n", |
|
|
1582 |
"Interventions object\n", |
|
|
1583 |
"Primary Outcome Measures object\n", |
|
|
1584 |
"Secondary Outcome Measures object\n", |
|
|
1585 |
"Other Outcome Measures object\n", |
|
|
1586 |
"Sponsor object\n", |
|
|
1587 |
"Collaborators object\n", |
|
|
1588 |
"Sex object\n", |
|
|
1589 |
"Age object\n", |
|
|
1590 |
"Phases object\n", |
|
|
1591 |
"Enrollment object\n", |
|
|
1592 |
"Funder Type object\n", |
|
|
1593 |
"Study Type object\n", |
|
|
1594 |
"Study Design object\n", |
|
|
1595 |
"Other IDs object\n", |
|
|
1596 |
"Locations object\n", |
|
|
1597 |
"Study Documents object\n", |
|
|
1598 |
"Time taken for Enrollment object\n", |
|
|
1599 |
"dtype: object\n" |
|
|
1600 |
] |
|
|
1601 |
} |
|
|
1602 |
] |
|
|
1603 |
}, |
|
|
1604 |
{ |
|
|
1605 |
"cell_type": "code", |
|
|
1606 |
"source": [ |
|
|
1607 |
"import re\n", |
|
|
1608 |
"from nltk.corpus import stopwords\n", |
|
|
1609 |
"from nltk.tokenize import word_tokenize\n", |
|
|
1610 |
"import nltk\n", |
|
|
1611 |
"\n", |
|
|
1612 |
"# Download necessary NLTK data\n", |
|
|
1613 |
"nltk.download('stopwords')\n", |
|
|
1614 |
"nltk.download('punkt')\n", |
|
|
1615 |
"nltk.download('punkt_tab') # Download punkt_tab data\n", |
|
|
1616 |
"\n", |
|
|
1617 |
"# Define the columns to process\n", |
|
|
1618 |
"text_columns = [\n", |
|
|
1619 |
" 'Study Title', 'Study Status', 'Brief Summary', 'Study Results',\n", |
|
|
1620 |
" 'Conditions', 'Interventions', 'Primary Outcome Measures',\n", |
|
|
1621 |
" 'Funder Type', 'Study Type', 'Study Design', 'Locations'\n", |
|
|
1622 |
"]\n", |
|
|
1623 |
"\n", |
|
|
1624 |
"# Define a function to preprocess text (remove prepositions and stopwords)\n", |
|
|
1625 |
"def preprocess_text(text):\n", |
|
|
1626 |
" if pd.isnull(text):\n", |
|
|
1627 |
" return text # Skip processing for NaN values\n", |
|
|
1628 |
" # Tokenize and remove punctuation\n", |
|
|
1629 |
" words = word_tokenize(re.sub(r'[^\\w\\s]', '', text.lower()))\n", |
|
|
1630 |
" # Remove stopwords (including prepositions)\n", |
|
|
1631 |
" filtered_words = [word for word in words if word not in stopwords.words('english')]\n", |
|
|
1632 |
" return ' '.join(filtered_words)\n", |
|
|
1633 |
"\n", |
|
|
1634 |
"# Apply preprocessing to specified columns\n", |
|
|
1635 |
"for column in text_columns:\n", |
|
|
1636 |
" if column in df.columns:\n", |
|
|
1637 |
" df[column] = df[column].apply(preprocess_text)" |
|
|
1638 |
], |
|
|
1639 |
"metadata": { |
|
|
1640 |
"colab": { |
|
|
1641 |
"base_uri": "https://localhost:8080/" |
|
|
1642 |
}, |
|
|
1643 |
"id": "EK48M-dFQBJW", |
|
|
1644 |
"outputId": "7f1601b1-da77-474b-efc1-9ea5b28607dc" |
|
|
1645 |
}, |
|
|
1646 |
"execution_count": null, |
|
|
1647 |
"outputs": [ |
|
|
1648 |
{ |
|
|
1649 |
"output_type": "stream", |
|
|
1650 |
"name": "stderr", |
|
|
1651 |
"text": [ |
|
|
1652 |
"[nltk_data] Downloading package stopwords to /root/nltk_data...\n", |
|
|
1653 |
"[nltk_data] Unzipping corpora/stopwords.zip.\n", |
|
|
1654 |
"[nltk_data] Downloading package punkt to /root/nltk_data...\n", |
|
|
1655 |
"[nltk_data] Unzipping tokenizers/punkt.zip.\n", |
|
|
1656 |
"[nltk_data] Downloading package punkt_tab to /root/nltk_data...\n", |
|
|
1657 |
"[nltk_data] Unzipping tokenizers/punkt_tab.zip.\n" |
|
|
1658 |
] |
|
|
1659 |
} |
|
|
1660 |
] |
|
|
1661 |
}, |
|
|
1662 |
{ |
|
|
1663 |
"cell_type": "code", |
|
|
1664 |
"source": [ |
|
|
1665 |
"print(df.head)" |
|
|
1666 |
], |
|
|
1667 |
"metadata": { |
|
|
1668 |
"id": "oizcbyiPQE-Q", |
|
|
1669 |
"colab": { |
|
|
1670 |
"base_uri": "https://localhost:8080/" |
|
|
1671 |
}, |
|
|
1672 |
"outputId": "52cd4dd2-688f-42f9-d44a-41c064365da0" |
|
|
1673 |
}, |
|
|
1674 |
"execution_count": null, |
|
|
1675 |
"outputs": [ |
|
|
1676 |
{ |
|
|
1677 |
"output_type": "stream", |
|
|
1678 |
"name": "stdout", |
|
|
1679 |
"text": [ |
|
|
1680 |
"<bound method NDFrame.head of Study Title \\\n", |
|
|
1681 |
"0 effects sevenday basis supplementation menopau... \n", |
|
|
1682 |
"1 peritoneal damage laparoscopic surgery \n", |
|
|
1683 |
"2 doxycycline treatment aggressive periodontitis \n", |
|
|
1684 |
"3 safety tolerability study vc02 combination pro... \n", |
|
|
1685 |
"4 treatment hemiparetic gait impairments using t... \n", |
|
|
1686 |
"... ... \n", |
|
|
1687 |
"3098 comparative effectiveness costeffectiveness ch... \n", |
|
|
1688 |
"3099 impact intestinal microbiota treatment ceftria... \n", |
|
|
1689 |
"3100 mental balance study \n", |
|
|
1690 |
"3101 glymphatic kinetics healthy adult volunteers \n", |
|
|
1691 |
"3102 utilizing mychart assess effectiveness interve... \n", |
|
|
1692 |
"\n", |
|
|
1693 |
" Study URL Acronym Study Status \\\n", |
|
|
1694 |
"0 https://clinicaltrials.gov/study/NCT04841499 NaN completed \n", |
|
|
1695 |
"1 https://clinicaltrials.gov/study/NCT03020641 NaN completed \n", |
|
|
1696 |
"2 https://clinicaltrials.gov/study/NCT03727620 NaN completed \n", |
|
|
1697 |
"3 https://clinicaltrials.gov/study/NCT03162926 NaN completed \n", |
|
|
1698 |
"4 https://clinicaltrials.gov/study/NCT04434313 NaN completed \n", |
|
|
1699 |
"... ... ... ... \n", |
|
|
1700 |
"3098 https://clinicaltrials.gov/study/NCT03294785 NaN completed \n", |
|
|
1701 |
"3099 https://clinicaltrials.gov/study/NCT03179384 CEFIMPACT completed \n", |
|
|
1702 |
"3100 https://clinicaltrials.gov/study/NCT05757050 NaN completed \n", |
|
|
1703 |
"3101 https://clinicaltrials.gov/study/NCT03218111 NaN completed \n", |
|
|
1704 |
"3102 https://clinicaltrials.gov/study/NCT05222464 NaN completed \n", |
|
|
1705 |
"\n", |
|
|
1706 |
" Brief Summary Study Results \\\n", |
|
|
1707 |
"0 purpose study determine whether short suppleme... \n", |
|
|
1708 |
"1 investigators hypothesized applying low intrap... yes \n", |
|
|
1709 |
"2 aim study compare clinical effects systemic us... \n", |
|
|
1710 |
"3 purpose trial test vc02 combination product im... \n", |
|
|
1711 |
"4 objective research investigate feasibility del... \n", |
|
|
1712 |
"... ... ... \n", |
|
|
1713 |
"3098 multicenter randomized controlled trial assess... \n", |
|
|
1714 |
"3099 acute pyelonephritis apn corresponds infection... \n", |
|
|
1715 |
"3100 proposed design randomised doubleblind control... \n", |
|
|
1716 |
"3101 study done order see gadoliniumbased mri contr... \n", |
|
|
1717 |
"3102 vasomotor symptoms vms common consequence syst... \n", |
|
|
1718 |
"\n", |
|
|
1719 |
" Conditions \\\n", |
|
|
1720 |
"0 menopause \n", |
|
|
1721 |
"1 peritoneal damage \n", |
|
|
1722 |
"2 aggressive periodontitis \n", |
|
|
1723 |
"3 type 1 diabetes mellitus \n", |
|
|
1724 |
"4 telemedicinegait hemiplegicgait disorders neur... \n", |
|
|
1725 |
"... ... \n", |
|
|
1726 |
"3098 chronic neck pain \n", |
|
|
1727 |
"3099 pyelonephritis acute \n", |
|
|
1728 |
"3100 mental health wellness 1work related stress \n", |
|
|
1729 |
"3101 healthy \n", |
|
|
1730 |
"3102 breast cancer \n", |
|
|
1731 |
"\n", |
|
|
1732 |
" Interventions \\\n", |
|
|
1733 |
"0 drug basis crystalline nicotinamide riboside 2... \n", |
|
|
1734 |
"1 procedure low pressure pneumoperitoneumprocedu... \n", |
|
|
1735 |
"2 drug amoxicillin plus metronidazoledrug doxycy... \n", |
|
|
1736 |
"3 combination_product vc02 combination product a... \n", |
|
|
1737 |
"4 device delivery istride device gait treatment ... \n", |
|
|
1738 |
"... ... \n", |
|
|
1739 |
"3098 procedure chuna manual therapydrug conventiona... \n", |
|
|
1740 |
"3099 drug ceftriaxone \n", |
|
|
1741 |
"3100 dietary_supplement refocus verum tabletsdietar... \n", |
|
|
1742 |
"3101 mr imagingother ctguidance \n", |
|
|
1743 |
"3102 standard care treatments \n", |
|
|
1744 |
"\n", |
|
|
1745 |
" Primary Outcome Measures \\\n", |
|
|
1746 |
"0 production estradiol determine whether short s... \n", |
|
|
1747 |
"1 inflammatory peritoneal markers logaritmic lev... \n", |
|
|
1748 |
"2 decrease periodontal pockets 4mm probing pocke... \n", |
|
|
1749 |
"3 incidence adverse events reported subjects thr... \n", |
|
|
1750 |
"4 feasibility safely implementing treatment prot... \n", |
|
|
1751 |
"... ... \n", |
|
|
1752 |
"3098 difference visual analogue scale vas neck pain... \n", |
|
|
1753 |
"3099 emergence ceftriaxoneresistant enterobacteriac... \n", |
|
|
1754 |
"3100 change cognitive function cognitive domain fac... \n", |
|
|
1755 |
"3101 drug distribution time drug distribution gadol... \n", |
|
|
1756 |
"3102 patient engagement mychart accessibility user ... \n", |
|
|
1757 |
"\n", |
|
|
1758 |
" Secondary Outcome Measures ... \\\n", |
|
|
1759 |
"0 NaN ... \n", |
|
|
1760 |
"1 NaN ... \n", |
|
|
1761 |
"2 Plaque index decrease, Plaque index was assess... ... \n", |
|
|
1762 |
"3 NaN ... \n", |
|
|
1763 |
"4 Feasibility of screening criteria, To enroll p... ... \n", |
|
|
1764 |
"... ... ... \n", |
|
|
1765 |
"3098 Difference between visual analogue scale (VAS)... ... \n", |
|
|
1766 |
"3099 NaN ... \n", |
|
|
1767 |
"3100 Profile of Mood States (POMS), 35-item measure... ... \n", |
|
|
1768 |
"3101 NaN ... \n", |
|
|
1769 |
"3102 Hot Flash Severity (MyChart Feasibility), Hot ... ... \n", |
|
|
1770 |
"\n", |
|
|
1771 |
" Age Phases Enrollment Funder Type \\\n", |
|
|
1772 |
"0 ADULT, OLDER_ADULT NaN 40 \n", |
|
|
1773 |
"1 ADULT, OLDER_ADULT NaN 100 \n", |
|
|
1774 |
"2 CHILD, ADULT PHASE1|PHASE2 24 \n", |
|
|
1775 |
"3 ADULT, OLDER_ADULT PHASE1 3 industry \n", |
|
|
1776 |
"4 ADULT, OLDER_ADULT NaN 6 industry \n", |
|
|
1777 |
"... ... ... ... ... \n", |
|
|
1778 |
"3098 ADULT NaN 108 \n", |
|
|
1779 |
"3099 ADULT, OLDER_ADULT PHASE4 9 \n", |
|
|
1780 |
"3100 ADULT, OLDER_ADULT NaN 36 industry \n", |
|
|
1781 |
"3101 ADULT, OLDER_ADULT NaN 19 \n", |
|
|
1782 |
"3102 ADULT, OLDER_ADULT PHASE4 56 \n", |
|
|
1783 |
"\n", |
|
|
1784 |
" Study Type Study Design \\\n", |
|
|
1785 |
"0 interventional allocation naintervention model single_groupma... \n", |
|
|
1786 |
"1 interventional allocation randomizedintervention model parall... \n", |
|
|
1787 |
"2 interventional allocation non_randomizedintervention model pa... \n", |
|
|
1788 |
"3 interventional allocation naintervention model single_groupma... \n", |
|
|
1789 |
"4 interventional allocation naintervention model single_groupma... \n", |
|
|
1790 |
"... ... ... \n", |
|
|
1791 |
"3098 interventional allocation randomizedintervention model parall... \n", |
|
|
1792 |
"3099 interventional allocation naintervention model single_groupma... \n", |
|
|
1793 |
"3100 interventional allocation randomizedintervention model crosso... \n", |
|
|
1794 |
"3101 interventional allocation naintervention model single_groupma... \n", |
|
|
1795 |
"3102 interventional allocation naintervention model single_groupma... \n", |
|
|
1796 |
"\n", |
|
|
1797 |
" Other IDs \\\n", |
|
|
1798 |
"0 USAH-EH301 \n", |
|
|
1799 |
"1 A-CGyD-2017 \n", |
|
|
1800 |
"2 DOXYAPG18 \n", |
|
|
1801 |
"3 VC02-102 \n", |
|
|
1802 |
"4 MOT-TELE-2020-04-00 \n", |
|
|
1803 |
"... ... \n", |
|
|
1804 |
"3098 JS-CT-2016-14 \n", |
|
|
1805 |
"3099 16-AOI-02 \n", |
|
|
1806 |
"3100 5'000'750-1 \n", |
|
|
1807 |
"3101 1609017536 \n", |
|
|
1808 |
"3102 REaCT-Hot Flashes Pilot \n", |
|
|
1809 |
"\n", |
|
|
1810 |
" Locations \\\n", |
|
|
1811 |
"0 university south alabama mobile alabama 36604 ... \n", |
|
|
1812 |
"1 ramon cajal hospital madrid 28034 spain \n", |
|
|
1813 |
"2 benrachadi latifa rabat morocco \n", |
|
|
1814 |
"3 university alberta edmonton alberta canada \n", |
|
|
1815 |
"4 moterum technologies inc study location homes ... \n", |
|
|
1816 |
"... ... \n", |
|
|
1817 |
"3098 bucheon jaseng hospital korean medicine bucheo... \n", |
|
|
1818 |
"3099 chu de nice nice 06003 france \n", |
|
|
1819 |
"3100 northumbria university newcastle upon tyne tyn... \n", |
|
|
1820 |
"3101 weill cornell medical college new york new yor... \n", |
|
|
1821 |
"3102 ottawa hospital cancer centre ottawa ontario c... \n", |
|
|
1822 |
"\n", |
|
|
1823 |
" Study Documents \\\n", |
|
|
1824 |
"0 NaN \n", |
|
|
1825 |
"1 Study Protocol and Statistical Analysis Plan, ... \n", |
|
|
1826 |
"2 NaN \n", |
|
|
1827 |
"3 NaN \n", |
|
|
1828 |
"4 NaN \n", |
|
|
1829 |
"... ... \n", |
|
|
1830 |
"3098 NaN \n", |
|
|
1831 |
"3099 NaN \n", |
|
|
1832 |
"3100 NaN \n", |
|
|
1833 |
"3101 NaN \n", |
|
|
1834 |
"3102 NaN \n", |
|
|
1835 |
"\n", |
|
|
1836 |
" Time taken for Enrollment \n", |
|
|
1837 |
"0 3 \n", |
|
|
1838 |
"1 27 \n", |
|
|
1839 |
"2 5 \n", |
|
|
1840 |
"3 7 \n", |
|
|
1841 |
"4 8 \n", |
|
|
1842 |
"... ... \n", |
|
|
1843 |
"3098 10 \n", |
|
|
1844 |
"3099 20 \n", |
|
|
1845 |
"3100 6 \n", |
|
|
1846 |
"3101 12 \n", |
|
|
1847 |
"3102 5 \n", |
|
|
1848 |
"\n", |
|
|
1849 |
"[3103 rows x 24 columns]>\n" |
|
|
1850 |
] |
|
|
1851 |
} |
|
|
1852 |
] |
|
|
1853 |
}, |
|
|
1854 |
{ |
|
|
1855 |
"cell_type": "code", |
|
|
1856 |
"source": [ |
|
|
1857 |
"import nltk\n", |
|
|
1858 |
"nltk.download('wordnet') # Download the wordnet dataset\n", |
|
|
1859 |
"\n", |
|
|
1860 |
"from nltk.corpus import wordnet\n", |
|
|
1861 |
"\n", |
|
|
1862 |
"# ... (Rest of your code)\n", |
|
|
1863 |
"\n", |
|
|
1864 |
"# Function to expand synonyms for a given word\n", |
|
|
1865 |
"def get_synonyms(word):\n", |
|
|
1866 |
" synonyms = set()\n", |
|
|
1867 |
" for syn in wordnet.synsets(word):\n", |
|
|
1868 |
" for lemma in syn.lemmas():\n", |
|
|
1869 |
" synonyms.add(lemma.name().replace('_', ' '))\n", |
|
|
1870 |
" return list(synonyms)\n", |
|
|
1871 |
"\n", |
|
|
1872 |
"# Function to expand synonyms in a text\n", |
|
|
1873 |
"def synonym_expansion(text):\n", |
|
|
1874 |
" if pd.isnull(text):\n", |
|
|
1875 |
" return text # Skip processing for NaN values\n", |
|
|
1876 |
" words = text.split() # Split the cleaned text into words\n", |
|
|
1877 |
" expanded_text = []\n", |
|
|
1878 |
" for word in words:\n", |
|
|
1879 |
" expanded_text.append(word) # Add the original word\n", |
|
|
1880 |
" expanded_text.extend(get_synonyms(word)) # Add synonyms\n", |
|
|
1881 |
" return ' '.join(set(expanded_text)) # Deduplicate and join back to a string\n", |
|
|
1882 |
"\n", |
|
|
1883 |
"# Apply synonym expansion to the same text columns\n", |
|
|
1884 |
"for column in text_columns:\n", |
|
|
1885 |
" if column in df.columns:\n", |
|
|
1886 |
" df[column] = df[column].apply(synonym_expansion)\n", |
|
|
1887 |
"\n", |
|
|
1888 |
"\n" |
|
|
1889 |
], |
|
|
1890 |
"metadata": { |
|
|
1891 |
"id": "VxCT0bvfQJF6", |
|
|
1892 |
"colab": { |
|
|
1893 |
"base_uri": "https://localhost:8080/" |
|
|
1894 |
}, |
|
|
1895 |
"outputId": "8997c388-c278-40cb-9d6a-557b1fcea3a6" |
|
|
1896 |
}, |
|
|
1897 |
"execution_count": null, |
|
|
1898 |
"outputs": [ |
|
|
1899 |
{ |
|
|
1900 |
"output_type": "stream", |
|
|
1901 |
"name": "stderr", |
|
|
1902 |
"text": [ |
|
|
1903 |
"[nltk_data] Downloading package wordnet to /root/nltk_data...\n" |
|
|
1904 |
] |
|
|
1905 |
} |
|
|
1906 |
] |
|
|
1907 |
}, |
|
|
1908 |
{ |
|
|
1909 |
"cell_type": "code", |
|
|
1910 |
"source": [ |
|
|
1911 |
"from sklearn.preprocessing import LabelEncoder\n", |
|
|
1912 |
"\n", |
|
|
1913 |
"# List of columns to label encode\n", |
|
|
1914 |
"label_columns = ['Sex', 'Age', 'Phases', 'Enrollment']\n", |
|
|
1915 |
"\n", |
|
|
1916 |
"# Initialize a dictionary to store encoders for each column (optional: for inverse transformations later)\n", |
|
|
1917 |
"label_encoders = {}\n", |
|
|
1918 |
"\n", |
|
|
1919 |
"# Apply label encoding to each specified column\n", |
|
|
1920 |
"for column in label_columns:\n", |
|
|
1921 |
" if column in df.columns:\n", |
|
|
1922 |
" le = LabelEncoder()\n", |
|
|
1923 |
" df[column] = le.fit_transform(df[column].astype(str)) # Ensure all data is treated as string\n", |
|
|
1924 |
" label_encoders[column] = le" |
|
|
1925 |
], |
|
|
1926 |
"metadata": { |
|
|
1927 |
"id": "tBlxiVGRQMwy" |
|
|
1928 |
}, |
|
|
1929 |
"execution_count": null, |
|
|
1930 |
"outputs": [] |
|
|
1931 |
}, |
|
|
1932 |
{ |
|
|
1933 |
"cell_type": "code", |
|
|
1934 |
"source": [ |
|
|
1935 |
"columns_to_check = [\n", |
|
|
1936 |
" 'Sex', 'Age', 'Phases', 'Enrollment', 'Study Title', 'Study Status', 'Brief Summary',\n", |
|
|
1937 |
" 'Study Results', 'Conditions', 'Interventions', 'Primary Outcome Measures',\n", |
|
|
1938 |
" 'Funder Type', 'Study Type', 'Study Design', 'Locations', 'Time taken for Enrollment'\n", |
|
|
1939 |
"]\n", |
|
|
1940 |
"\n", |
|
|
1941 |
"# Filter rows where all specified columns have non-null values\n", |
|
|
1942 |
"filtered_df = df.dropna(subset=columns_to_check)\n", |
|
|
1943 |
"\n", |
|
|
1944 |
"# Select the top 1000 rows\n", |
|
|
1945 |
"top_1000_rows = filtered_df.head(1000)" |
|
|
1946 |
], |
|
|
1947 |
"metadata": { |
|
|
1948 |
"id": "LFnloowZQPqa" |
|
|
1949 |
}, |
|
|
1950 |
"execution_count": null, |
|
|
1951 |
"outputs": [] |
|
|
1952 |
}, |
|
|
1953 |
{ |
|
|
1954 |
"cell_type": "code", |
|
|
1955 |
"source": [ |
|
|
1956 |
"from transformers import AutoTokenizer, AutoModel\n", |
|
|
1957 |
"import torch\n", |
|
|
1958 |
"\n", |
|
|
1959 |
"# Load the PubMedBERT model and tokenizer\n", |
|
|
1960 |
"model_name = \"microsoft/BiomedNLP-PubMedBERT-base-uncased-abstract-fulltext\"\n", |
|
|
1961 |
"tokenizer = AutoTokenizer.from_pretrained(model_name)\n", |
|
|
1962 |
"model = AutoModel.from_pretrained(model_name)\n", |
|
|
1963 |
"\n", |
|
|
1964 |
"# Function to generate embeddings\n", |
|
|
1965 |
"def generate_embedding(text, tokenizer, model):\n", |
|
|
1966 |
" if pd.isna(text) or text.strip() == \"\": # Handle empty or NaN values\n", |
|
|
1967 |
" return torch.zeros(768).tolist() # Return a zero vector if the text is empty\n", |
|
|
1968 |
" inputs = tokenizer(text, return_tensors=\"pt\", truncation=True, max_length=512, padding=True)\n", |
|
|
1969 |
" with torch.no_grad():\n", |
|
|
1970 |
" outputs = model(**inputs)\n", |
|
|
1971 |
" return outputs.last_hidden_state.mean(dim=1).squeeze().tolist() # Mean pooling of embeddings\n", |
|
|
1972 |
"\n", |
|
|
1973 |
"# Columns to process\n", |
|
|
1974 |
"text_columns = [\n", |
|
|
1975 |
" 'Study Title', 'Study Status', 'Brief Summary', 'Study Results',\n", |
|
|
1976 |
" 'Conditions', 'Interventions', 'Primary Outcome Measures',\n", |
|
|
1977 |
" 'Funder Type', 'Study Type', 'Study Design', 'Locations'\n", |
|
|
1978 |
"]\n", |
|
|
1979 |
"\n", |
|
|
1980 |
"# Generate embeddings for each column using PubMedBERT\n", |
|
|
1981 |
"for col in text_columns:\n", |
|
|
1982 |
" print(f\"Generating embeddings for column: {col} using PubMedBERT\")\n", |
|
|
1983 |
" top_1000_rows[f\"{col}_embedding\"] = top_1000_rows[col].apply(\n", |
|
|
1984 |
" lambda x: generate_embedding(x, tokenizer, model)\n", |
|
|
1985 |
" )\n" |
|
|
1986 |
], |
|
|
1987 |
"metadata": { |
|
|
1988 |
"id": "WB6AGY7uQSIR", |
|
|
1989 |
"colab": { |
|
|
1990 |
"base_uri": "https://localhost:8080/", |
|
|
1991 |
"height": 1000, |
|
|
1992 |
"referenced_widgets": [ |
|
|
1993 |
"e41925970dc94c2aa90b4da8acac85cf", |
|
|
1994 |
"c1f0f99a4a4341d18e0039a71b305111", |
|
|
1995 |
"d54d01c91e694b3eb180170cddd1211c", |
|
|
1996 |
"3c707baf63cf4cbf9732e39ddeb84c7c", |
|
|
1997 |
"08955c157996426eaa089d878b8d820f", |
|
|
1998 |
"da9c8ff09bed4c6989b0246c7bdc8fd7", |
|
|
1999 |
"b78266bbcc0e4ed0bcaab9009b30d98e", |
|
|
2000 |
"2fd8c28ebf1b47f78e2e0093608407cf", |
|
|
2001 |
"8c728d06a0814cc8b83931b24f0115d9", |
|
|
2002 |
"da4b0713ce9f47208a39ec89515c30e4", |
|
|
2003 |
"b2fd795e6a534319a87213f05e824315", |
|
|
2004 |
"0722a8ceb94345a79e5bdc3b84f71d7f", |
|
|
2005 |
"7c04cff87d1041b1878488f5014f9b7c", |
|
|
2006 |
"0ef4539514a1462caacf58e5c3fa516b", |
|
|
2007 |
"4c61a2b37c4c4ffbb3a10d270140724f", |
|
|
2008 |
"d1288d4268e74bd384064c4f2cfbfa7b", |
|
|
2009 |
"1c84ce5cb56a4c7286c0f5981b8fbd5a", |
|
|
2010 |
"61a01f78b9714e4aa0d869d8e6563e81", |
|
|
2011 |
"180753d93be944e98c47bba836397ba0", |
|
|
2012 |
"db137743dfc24b6b84c6c15bcd5b5766", |
|
|
2013 |
"16f88feb88fc43b5b381521d91b02150", |
|
|
2014 |
"9b2a4006744a4940aa64fd9e41d62d4e", |
|
|
2015 |
"d55048b2772b47eab27637e9aa42d4dc", |
|
|
2016 |
"a70574b040b14832abb25d2eb040fb0a", |
|
|
2017 |
"e5c3bf5ade9a405094a1673bc2beb795", |
|
|
2018 |
"3d7c0e5ba179442eb417435ff72ae85a", |
|
|
2019 |
"b8aea249ccf04a619c1e926e7b6b6bbe", |
|
|
2020 |
"73554830b9524f1b8b8714ff33c3b8e8", |
|
|
2021 |
"15bf509be6d946e187e14fd6854950a9", |
|
|
2022 |
"65855073adcd4434b8e9af65ecc59915", |
|
|
2023 |
"f3485f93a7374df49cc200d18e9ac49e", |
|
|
2024 |
"53d6422031bf48dab34a3b47e237da93", |
|
|
2025 |
"1ebb572142e8490199aa8ffce39df341", |
|
|
2026 |
"efe460065f0448acbf75200543187bb0", |
|
|
2027 |
"0e6e8bc125874564bb46431ac85524dc", |
|
|
2028 |
"30d5690beb7341dc8b37de5a1e0812ab", |
|
|
2029 |
"e8c76754ea784709bae0c59843c61279", |
|
|
2030 |
"67690c975154491b96ed9091db152a0f", |
|
|
2031 |
"74bbdf59962d41059f018e6eab297968", |
|
|
2032 |
"2c20eb99653d4026ace81ccbe858b479", |
|
|
2033 |
"183aee869ce34eaca26f1cf533559caa", |
|
|
2034 |
"d4622e6a3301483c91a66836d5724e0e", |
|
|
2035 |
"d9c5d0256f534e4cbd82797e1e9f3ccd", |
|
|
2036 |
"0dc7017260764c9dbdcb9167e7a40b15" |
|
|
2037 |
] |
|
|
2038 |
}, |
|
|
2039 |
"outputId": "4ca695b1-5a35-4c3d-d856-5e6450e388a2" |
|
|
2040 |
}, |
|
|
2041 |
"execution_count": null, |
|
|
2042 |
"outputs": [ |
|
|
2043 |
{ |
|
|
2044 |
"output_type": "stream", |
|
|
2045 |
"name": "stderr", |
|
|
2046 |
"text": [ |
|
|
2047 |
"/usr/local/lib/python3.10/dist-packages/huggingface_hub/utils/_auth.py:94: UserWarning: \n", |
|
|
2048 |
"The secret `HF_TOKEN` does not exist in your Colab secrets.\n", |
|
|
2049 |
"To authenticate with the Hugging Face Hub, create a token in your settings tab (https://huggingface.co/settings/tokens), set it as secret in your Google Colab and restart your session.\n", |
|
|
2050 |
"You will be able to reuse this secret in all of your notebooks.\n", |
|
|
2051 |
"Please note that authentication is recommended but still optional to access public models or datasets.\n", |
|
|
2052 |
" warnings.warn(\n" |
|
|
2053 |
] |
|
|
2054 |
}, |
|
|
2055 |
{ |
|
|
2056 |
"output_type": "display_data", |
|
|
2057 |
"data": { |
|
|
2058 |
"text/plain": [ |
|
|
2059 |
"tokenizer_config.json: 0%| | 0.00/28.0 [00:00<?, ?B/s]" |
|
|
2060 |
], |
|
|
2061 |
"application/vnd.jupyter.widget-view+json": { |
|
|
2062 |
"version_major": 2, |
|
|
2063 |
"version_minor": 0, |
|
|
2064 |
"model_id": "e41925970dc94c2aa90b4da8acac85cf" |
|
|
2065 |
} |
|
|
2066 |
}, |
|
|
2067 |
"metadata": {} |
|
|
2068 |
}, |
|
|
2069 |
{ |
|
|
2070 |
"output_type": "display_data", |
|
|
2071 |
"data": { |
|
|
2072 |
"text/plain": [ |
|
|
2073 |
"config.json: 0%| | 0.00/385 [00:00<?, ?B/s]" |
|
|
2074 |
], |
|
|
2075 |
"application/vnd.jupyter.widget-view+json": { |
|
|
2076 |
"version_major": 2, |
|
|
2077 |
"version_minor": 0, |
|
|
2078 |
"model_id": "0722a8ceb94345a79e5bdc3b84f71d7f" |
|
|
2079 |
} |
|
|
2080 |
}, |
|
|
2081 |
"metadata": {} |
|
|
2082 |
}, |
|
|
2083 |
{ |
|
|
2084 |
"output_type": "display_data", |
|
|
2085 |
"data": { |
|
|
2086 |
"text/plain": [ |
|
|
2087 |
"vocab.txt: 0%| | 0.00/226k [00:00<?, ?B/s]" |
|
|
2088 |
], |
|
|
2089 |
"application/vnd.jupyter.widget-view+json": { |
|
|
2090 |
"version_major": 2, |
|
|
2091 |
"version_minor": 0, |
|
|
2092 |
"model_id": "d55048b2772b47eab27637e9aa42d4dc" |
|
|
2093 |
} |
|
|
2094 |
}, |
|
|
2095 |
"metadata": {} |
|
|
2096 |
}, |
|
|
2097 |
{ |
|
|
2098 |
"output_type": "display_data", |
|
|
2099 |
"data": { |
|
|
2100 |
"text/plain": [ |
|
|
2101 |
"pytorch_model.bin: 0%| | 0.00/440M [00:00<?, ?B/s]" |
|
|
2102 |
], |
|
|
2103 |
"application/vnd.jupyter.widget-view+json": { |
|
|
2104 |
"version_major": 2, |
|
|
2105 |
"version_minor": 0, |
|
|
2106 |
"model_id": "efe460065f0448acbf75200543187bb0" |
|
|
2107 |
} |
|
|
2108 |
}, |
|
|
2109 |
"metadata": {} |
|
|
2110 |
}, |
|
|
2111 |
{ |
|
|
2112 |
"output_type": "stream", |
|
|
2113 |
"name": "stdout", |
|
|
2114 |
"text": [ |
|
|
2115 |
"Generating embeddings for column: Study Title using PubMedBERT\n" |
|
|
2116 |
] |
|
|
2117 |
}, |
|
|
2118 |
{ |
|
|
2119 |
"output_type": "stream", |
|
|
2120 |
"name": "stderr", |
|
|
2121 |
"text": [ |
|
|
2122 |
"<ipython-input-11-7092d7125584>:28: SettingWithCopyWarning: \n", |
|
|
2123 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2124 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2125 |
"\n", |
|
|
2126 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2127 |
" top_1000_rows[f\"{col}_embedding\"] = top_1000_rows[col].apply(\n" |
|
|
2128 |
] |
|
|
2129 |
}, |
|
|
2130 |
{ |
|
|
2131 |
"output_type": "stream", |
|
|
2132 |
"name": "stdout", |
|
|
2133 |
"text": [ |
|
|
2134 |
"Generating embeddings for column: Study Status using PubMedBERT\n" |
|
|
2135 |
] |
|
|
2136 |
}, |
|
|
2137 |
{ |
|
|
2138 |
"output_type": "stream", |
|
|
2139 |
"name": "stderr", |
|
|
2140 |
"text": [ |
|
|
2141 |
"<ipython-input-11-7092d7125584>:28: SettingWithCopyWarning: \n", |
|
|
2142 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2143 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2144 |
"\n", |
|
|
2145 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2146 |
" top_1000_rows[f\"{col}_embedding\"] = top_1000_rows[col].apply(\n" |
|
|
2147 |
] |
|
|
2148 |
}, |
|
|
2149 |
{ |
|
|
2150 |
"output_type": "stream", |
|
|
2151 |
"name": "stdout", |
|
|
2152 |
"text": [ |
|
|
2153 |
"Generating embeddings for column: Brief Summary using PubMedBERT\n" |
|
|
2154 |
] |
|
|
2155 |
}, |
|
|
2156 |
{ |
|
|
2157 |
"output_type": "stream", |
|
|
2158 |
"name": "stderr", |
|
|
2159 |
"text": [ |
|
|
2160 |
"<ipython-input-11-7092d7125584>:28: SettingWithCopyWarning: \n", |
|
|
2161 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2162 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2163 |
"\n", |
|
|
2164 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2165 |
" top_1000_rows[f\"{col}_embedding\"] = top_1000_rows[col].apply(\n" |
|
|
2166 |
] |
|
|
2167 |
}, |
|
|
2168 |
{ |
|
|
2169 |
"output_type": "stream", |
|
|
2170 |
"name": "stdout", |
|
|
2171 |
"text": [ |
|
|
2172 |
"Generating embeddings for column: Study Results using PubMedBERT\n" |
|
|
2173 |
] |
|
|
2174 |
}, |
|
|
2175 |
{ |
|
|
2176 |
"output_type": "stream", |
|
|
2177 |
"name": "stderr", |
|
|
2178 |
"text": [ |
|
|
2179 |
"<ipython-input-11-7092d7125584>:28: SettingWithCopyWarning: \n", |
|
|
2180 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2181 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2182 |
"\n", |
|
|
2183 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2184 |
" top_1000_rows[f\"{col}_embedding\"] = top_1000_rows[col].apply(\n" |
|
|
2185 |
] |
|
|
2186 |
}, |
|
|
2187 |
{ |
|
|
2188 |
"output_type": "stream", |
|
|
2189 |
"name": "stdout", |
|
|
2190 |
"text": [ |
|
|
2191 |
"Generating embeddings for column: Conditions using PubMedBERT\n" |
|
|
2192 |
] |
|
|
2193 |
}, |
|
|
2194 |
{ |
|
|
2195 |
"output_type": "stream", |
|
|
2196 |
"name": "stderr", |
|
|
2197 |
"text": [ |
|
|
2198 |
"<ipython-input-11-7092d7125584>:28: SettingWithCopyWarning: \n", |
|
|
2199 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2200 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2201 |
"\n", |
|
|
2202 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2203 |
" top_1000_rows[f\"{col}_embedding\"] = top_1000_rows[col].apply(\n" |
|
|
2204 |
] |
|
|
2205 |
}, |
|
|
2206 |
{ |
|
|
2207 |
"output_type": "stream", |
|
|
2208 |
"name": "stdout", |
|
|
2209 |
"text": [ |
|
|
2210 |
"Generating embeddings for column: Interventions using PubMedBERT\n" |
|
|
2211 |
] |
|
|
2212 |
}, |
|
|
2213 |
{ |
|
|
2214 |
"output_type": "stream", |
|
|
2215 |
"name": "stderr", |
|
|
2216 |
"text": [ |
|
|
2217 |
"<ipython-input-11-7092d7125584>:28: SettingWithCopyWarning: \n", |
|
|
2218 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2219 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2220 |
"\n", |
|
|
2221 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2222 |
" top_1000_rows[f\"{col}_embedding\"] = top_1000_rows[col].apply(\n" |
|
|
2223 |
] |
|
|
2224 |
}, |
|
|
2225 |
{ |
|
|
2226 |
"output_type": "stream", |
|
|
2227 |
"name": "stdout", |
|
|
2228 |
"text": [ |
|
|
2229 |
"Generating embeddings for column: Primary Outcome Measures using PubMedBERT\n" |
|
|
2230 |
] |
|
|
2231 |
}, |
|
|
2232 |
{ |
|
|
2233 |
"output_type": "stream", |
|
|
2234 |
"name": "stderr", |
|
|
2235 |
"text": [ |
|
|
2236 |
"<ipython-input-11-7092d7125584>:28: SettingWithCopyWarning: \n", |
|
|
2237 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2238 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2239 |
"\n", |
|
|
2240 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2241 |
" top_1000_rows[f\"{col}_embedding\"] = top_1000_rows[col].apply(\n" |
|
|
2242 |
] |
|
|
2243 |
}, |
|
|
2244 |
{ |
|
|
2245 |
"output_type": "stream", |
|
|
2246 |
"name": "stdout", |
|
|
2247 |
"text": [ |
|
|
2248 |
"Generating embeddings for column: Funder Type using PubMedBERT\n" |
|
|
2249 |
] |
|
|
2250 |
}, |
|
|
2251 |
{ |
|
|
2252 |
"output_type": "stream", |
|
|
2253 |
"name": "stderr", |
|
|
2254 |
"text": [ |
|
|
2255 |
"<ipython-input-11-7092d7125584>:28: SettingWithCopyWarning: \n", |
|
|
2256 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2257 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2258 |
"\n", |
|
|
2259 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2260 |
" top_1000_rows[f\"{col}_embedding\"] = top_1000_rows[col].apply(\n" |
|
|
2261 |
] |
|
|
2262 |
}, |
|
|
2263 |
{ |
|
|
2264 |
"output_type": "stream", |
|
|
2265 |
"name": "stdout", |
|
|
2266 |
"text": [ |
|
|
2267 |
"Generating embeddings for column: Study Type using PubMedBERT\n" |
|
|
2268 |
] |
|
|
2269 |
}, |
|
|
2270 |
{ |
|
|
2271 |
"output_type": "stream", |
|
|
2272 |
"name": "stderr", |
|
|
2273 |
"text": [ |
|
|
2274 |
"<ipython-input-11-7092d7125584>:28: SettingWithCopyWarning: \n", |
|
|
2275 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2276 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2277 |
"\n", |
|
|
2278 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2279 |
" top_1000_rows[f\"{col}_embedding\"] = top_1000_rows[col].apply(\n" |
|
|
2280 |
] |
|
|
2281 |
}, |
|
|
2282 |
{ |
|
|
2283 |
"output_type": "stream", |
|
|
2284 |
"name": "stdout", |
|
|
2285 |
"text": [ |
|
|
2286 |
"Generating embeddings for column: Study Design using PubMedBERT\n" |
|
|
2287 |
] |
|
|
2288 |
}, |
|
|
2289 |
{ |
|
|
2290 |
"output_type": "stream", |
|
|
2291 |
"name": "stderr", |
|
|
2292 |
"text": [ |
|
|
2293 |
"<ipython-input-11-7092d7125584>:28: SettingWithCopyWarning: \n", |
|
|
2294 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2295 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2296 |
"\n", |
|
|
2297 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2298 |
" top_1000_rows[f\"{col}_embedding\"] = top_1000_rows[col].apply(\n" |
|
|
2299 |
] |
|
|
2300 |
}, |
|
|
2301 |
{ |
|
|
2302 |
"output_type": "stream", |
|
|
2303 |
"name": "stdout", |
|
|
2304 |
"text": [ |
|
|
2305 |
"Generating embeddings for column: Locations using PubMedBERT\n" |
|
|
2306 |
] |
|
|
2307 |
}, |
|
|
2308 |
{ |
|
|
2309 |
"output_type": "stream", |
|
|
2310 |
"name": "stderr", |
|
|
2311 |
"text": [ |
|
|
2312 |
"<ipython-input-11-7092d7125584>:28: SettingWithCopyWarning: \n", |
|
|
2313 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2314 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2315 |
"\n", |
|
|
2316 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2317 |
" top_1000_rows[f\"{col}_embedding\"] = top_1000_rows[col].apply(\n" |
|
|
2318 |
] |
|
|
2319 |
} |
|
|
2320 |
] |
|
|
2321 |
}, |
|
|
2322 |
{ |
|
|
2323 |
"cell_type": "code", |
|
|
2324 |
"source": [ |
|
|
2325 |
"!pip install umap-learn" |
|
|
2326 |
], |
|
|
2327 |
"metadata": { |
|
|
2328 |
"id": "gfPr4CcMQWMx", |
|
|
2329 |
"colab": { |
|
|
2330 |
"base_uri": "https://localhost:8080/" |
|
|
2331 |
}, |
|
|
2332 |
"outputId": "094e9427-18ef-40b5-a216-afd5416b4b69" |
|
|
2333 |
}, |
|
|
2334 |
"execution_count": null, |
|
|
2335 |
"outputs": [ |
|
|
2336 |
{ |
|
|
2337 |
"output_type": "stream", |
|
|
2338 |
"name": "stdout", |
|
|
2339 |
"text": [ |
|
|
2340 |
"Collecting umap-learn\n", |
|
|
2341 |
" Downloading umap_learn-0.5.7-py3-none-any.whl.metadata (21 kB)\n", |
|
|
2342 |
"Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.10/dist-packages (from umap-learn) (1.26.4)\n", |
|
|
2343 |
"Requirement already satisfied: scipy>=1.3.1 in /usr/local/lib/python3.10/dist-packages (from umap-learn) (1.13.1)\n", |
|
|
2344 |
"Requirement already satisfied: scikit-learn>=0.22 in /usr/local/lib/python3.10/dist-packages (from umap-learn) (1.6.0)\n", |
|
|
2345 |
"Requirement already satisfied: numba>=0.51.2 in /usr/local/lib/python3.10/dist-packages (from umap-learn) (0.60.0)\n", |
|
|
2346 |
"Collecting pynndescent>=0.5 (from umap-learn)\n", |
|
|
2347 |
" Downloading pynndescent-0.5.13-py3-none-any.whl.metadata (6.8 kB)\n", |
|
|
2348 |
"Requirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (from umap-learn) (4.67.1)\n", |
|
|
2349 |
"Requirement already satisfied: llvmlite<0.44,>=0.43.0dev0 in /usr/local/lib/python3.10/dist-packages (from numba>=0.51.2->umap-learn) (0.43.0)\n", |
|
|
2350 |
"Requirement already satisfied: joblib>=0.11 in /usr/local/lib/python3.10/dist-packages (from pynndescent>=0.5->umap-learn) (1.4.2)\n", |
|
|
2351 |
"Requirement already satisfied: threadpoolctl>=3.1.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn>=0.22->umap-learn) (3.5.0)\n", |
|
|
2352 |
"Downloading umap_learn-0.5.7-py3-none-any.whl (88 kB)\n", |
|
|
2353 |
"\u001b[?25l \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/88.8 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m88.8/88.8 kB\u001b[0m \u001b[31m3.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", |
|
|
2354 |
"\u001b[?25hDownloading pynndescent-0.5.13-py3-none-any.whl (56 kB)\n", |
|
|
2355 |
"\u001b[?25l \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/56.9 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m56.9/56.9 kB\u001b[0m \u001b[31m4.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", |
|
|
2356 |
"\u001b[?25hInstalling collected packages: pynndescent, umap-learn\n", |
|
|
2357 |
"Successfully installed pynndescent-0.5.13 umap-learn-0.5.7\n" |
|
|
2358 |
] |
|
|
2359 |
} |
|
|
2360 |
] |
|
|
2361 |
}, |
|
|
2362 |
{ |
|
|
2363 |
"cell_type": "code", |
|
|
2364 |
"source": [ |
|
|
2365 |
"from sklearn.manifold import TSNE\n", |
|
|
2366 |
"import umap\n", |
|
|
2367 |
"import matplotlib.pyplot as plt\n", |
|
|
2368 |
"from sklearn.metrics import pairwise_distances\n", |
|
|
2369 |
"import numpy as np\n", |
|
|
2370 |
"\n", |
|
|
2371 |
"# Combine all embedding columns into a single DataFrame\n", |
|
|
2372 |
"embedding_columns = [f\"{col}_embedding\" for col in [\n", |
|
|
2373 |
" 'Study Title', 'Study Status', 'Brief Summary', 'Study Results',\n", |
|
|
2374 |
" 'Conditions', 'Interventions', 'Primary Outcome Measures',\n", |
|
|
2375 |
" 'Funder Type', 'Study Type', 'Study Design', 'Locations'\n", |
|
|
2376 |
"]]\n", |
|
|
2377 |
"\n", |
|
|
2378 |
"# Flatten embeddings into a single numpy array\n", |
|
|
2379 |
"embedding_data = np.vstack(\n", |
|
|
2380 |
" top_1000_rows[embedding_columns].apply(\n", |
|
|
2381 |
" lambda row: np.concatenate(row.values), axis=1\n", |
|
|
2382 |
" )\n", |
|
|
2383 |
")\n", |
|
|
2384 |
"\n", |
|
|
2385 |
"# Use pairwise distances for elbow method\n", |
|
|
2386 |
"distances = pairwise_distances(embedding_data, metric='euclidean')\n", |
|
|
2387 |
"\n", |
|
|
2388 |
"# Find optimal dimensions for UMAP using the elbow method\n", |
|
|
2389 |
"inertia = []\n", |
|
|
2390 |
"dimensions = range(2, 50) # Test dimensions from 2 to 50\n", |
|
|
2391 |
"for dim in dimensions:\n", |
|
|
2392 |
" umap_reducer = umap.UMAP(n_components=dim, random_state=42)\n", |
|
|
2393 |
" transformed = umap_reducer.fit_transform(embedding_data)\n", |
|
|
2394 |
" inertia.append(np.sum(np.var(transformed, axis=0))) # Variance in reduced dimensions\n", |
|
|
2395 |
"\n", |
|
|
2396 |
"# Plot the elbow curve\n", |
|
|
2397 |
"plt.figure(figsize=(8, 5))\n", |
|
|
2398 |
"plt.plot(dimensions, inertia, marker='o')\n", |
|
|
2399 |
"plt.title(\"Elbow Method for UMAP Dimension Reduction\")\n", |
|
|
2400 |
"plt.xlabel(\"Number of Components\")\n", |
|
|
2401 |
"plt.ylabel(\"Sum of Variance\")\n", |
|
|
2402 |
"plt.grid()\n", |
|
|
2403 |
"plt.show()" |
|
|
2404 |
], |
|
|
2405 |
"metadata": { |
|
|
2406 |
"id": "g6Jg9xf1Vq8B", |
|
|
2407 |
"colab": { |
|
|
2408 |
"base_uri": "https://localhost:8080/", |
|
|
2409 |
"height": 1000 |
|
|
2410 |
}, |
|
|
2411 |
"outputId": "1409e037-88f0-4038-d687-3ead90037e6a" |
|
|
2412 |
}, |
|
|
2413 |
"execution_count": null, |
|
|
2414 |
"outputs": [ |
|
|
2415 |
{ |
|
|
2416 |
"output_type": "stream", |
|
|
2417 |
"name": "stderr", |
|
|
2418 |
"text": [ |
|
|
2419 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2420 |
" warnings.warn(\n", |
|
|
2421 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2422 |
" warn(\n", |
|
|
2423 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2424 |
" warnings.warn(\n", |
|
|
2425 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2426 |
" warn(\n", |
|
|
2427 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2428 |
" warnings.warn(\n", |
|
|
2429 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2430 |
" warn(\n", |
|
|
2431 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2432 |
" warnings.warn(\n", |
|
|
2433 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2434 |
" warn(\n", |
|
|
2435 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2436 |
" warnings.warn(\n", |
|
|
2437 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2438 |
" warn(\n", |
|
|
2439 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2440 |
" warnings.warn(\n", |
|
|
2441 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2442 |
" warn(\n", |
|
|
2443 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2444 |
" warnings.warn(\n", |
|
|
2445 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2446 |
" warn(\n", |
|
|
2447 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2448 |
" warnings.warn(\n", |
|
|
2449 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2450 |
" warn(\n", |
|
|
2451 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2452 |
" warnings.warn(\n", |
|
|
2453 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2454 |
" warn(\n", |
|
|
2455 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2456 |
" warnings.warn(\n", |
|
|
2457 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2458 |
" warn(\n", |
|
|
2459 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2460 |
" warnings.warn(\n", |
|
|
2461 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2462 |
" warn(\n", |
|
|
2463 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2464 |
" warnings.warn(\n", |
|
|
2465 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2466 |
" warn(\n", |
|
|
2467 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2468 |
" warnings.warn(\n", |
|
|
2469 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2470 |
" warn(\n", |
|
|
2471 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2472 |
" warnings.warn(\n", |
|
|
2473 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2474 |
" warn(\n", |
|
|
2475 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2476 |
" warnings.warn(\n", |
|
|
2477 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2478 |
" warn(\n", |
|
|
2479 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2480 |
" warnings.warn(\n", |
|
|
2481 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2482 |
" warn(\n", |
|
|
2483 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2484 |
" warnings.warn(\n", |
|
|
2485 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2486 |
" warn(\n", |
|
|
2487 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2488 |
" warnings.warn(\n", |
|
|
2489 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2490 |
" warn(\n", |
|
|
2491 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2492 |
" warnings.warn(\n", |
|
|
2493 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2494 |
" warn(\n", |
|
|
2495 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2496 |
" warnings.warn(\n", |
|
|
2497 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2498 |
" warn(\n", |
|
|
2499 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2500 |
" warnings.warn(\n", |
|
|
2501 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2502 |
" warn(\n", |
|
|
2503 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2504 |
" warnings.warn(\n", |
|
|
2505 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2506 |
" warn(\n", |
|
|
2507 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2508 |
" warnings.warn(\n", |
|
|
2509 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2510 |
" warn(\n", |
|
|
2511 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2512 |
" warnings.warn(\n", |
|
|
2513 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2514 |
" warn(\n", |
|
|
2515 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2516 |
" warnings.warn(\n", |
|
|
2517 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2518 |
" warn(\n", |
|
|
2519 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2520 |
" warnings.warn(\n", |
|
|
2521 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2522 |
" warn(\n", |
|
|
2523 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2524 |
" warnings.warn(\n", |
|
|
2525 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2526 |
" warn(\n", |
|
|
2527 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2528 |
" warnings.warn(\n", |
|
|
2529 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2530 |
" warn(\n", |
|
|
2531 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2532 |
" warnings.warn(\n", |
|
|
2533 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2534 |
" warn(\n", |
|
|
2535 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2536 |
" warnings.warn(\n", |
|
|
2537 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2538 |
" warn(\n", |
|
|
2539 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2540 |
" warnings.warn(\n", |
|
|
2541 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2542 |
" warn(\n", |
|
|
2543 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2544 |
" warnings.warn(\n", |
|
|
2545 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2546 |
" warn(\n", |
|
|
2547 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2548 |
" warnings.warn(\n", |
|
|
2549 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2550 |
" warn(\n", |
|
|
2551 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2552 |
" warnings.warn(\n", |
|
|
2553 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2554 |
" warn(\n", |
|
|
2555 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2556 |
" warnings.warn(\n", |
|
|
2557 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2558 |
" warn(\n", |
|
|
2559 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2560 |
" warnings.warn(\n", |
|
|
2561 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2562 |
" warn(\n", |
|
|
2563 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2564 |
" warnings.warn(\n", |
|
|
2565 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2566 |
" warn(\n", |
|
|
2567 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2568 |
" warnings.warn(\n", |
|
|
2569 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2570 |
" warn(\n", |
|
|
2571 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2572 |
" warnings.warn(\n", |
|
|
2573 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2574 |
" warn(\n", |
|
|
2575 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2576 |
" warnings.warn(\n", |
|
|
2577 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2578 |
" warn(\n", |
|
|
2579 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2580 |
" warnings.warn(\n", |
|
|
2581 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2582 |
" warn(\n", |
|
|
2583 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2584 |
" warnings.warn(\n", |
|
|
2585 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2586 |
" warn(\n", |
|
|
2587 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2588 |
" warnings.warn(\n", |
|
|
2589 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2590 |
" warn(\n", |
|
|
2591 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2592 |
" warnings.warn(\n", |
|
|
2593 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2594 |
" warn(\n", |
|
|
2595 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2596 |
" warnings.warn(\n", |
|
|
2597 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2598 |
" warn(\n", |
|
|
2599 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2600 |
" warnings.warn(\n", |
|
|
2601 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2602 |
" warn(\n", |
|
|
2603 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2604 |
" warnings.warn(\n", |
|
|
2605 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2606 |
" warn(\n", |
|
|
2607 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2608 |
" warnings.warn(\n", |
|
|
2609 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2610 |
" warn(\n" |
|
|
2611 |
] |
|
|
2612 |
}, |
|
|
2613 |
{ |
|
|
2614 |
"output_type": "display_data", |
|
|
2615 |
"data": { |
|
|
2616 |
"text/plain": [ |
|
|
2617 |
"<Figure size 800x500 with 1 Axes>" |
|
|
2618 |
], |
|
|
2619 |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAArcAAAHWCAYAAABt3aEVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAADUn0lEQVR4nOydd5wU9f3/X7P9ej+uAEeVXgRFUBBQUECxRGNXjEZjj2KMGmOQaKIYS772hF+MRiyJsUQUURQUVAQVAelwHAccV7jbq9vL/P6Y/czu3m2ZnZ3dnb17Px8PEm/rbJt5z+vzer/eHM/zPAiCIAiCIAiiF6BJ9QYQBEEQBEEQhFJQcUsQBEEQBEH0Gqi4JQiCIAiCIHoNVNwSBEEQBEEQvQYqbgmCIAiCIIheAxW3BEEQBEEQRK+BiluCIAiCIAii10DFLUEQBEEQBNFroOKWIAiCIAiC6DVQcUsQIeA4Dg899JD490MPPQSO49Dc3Jy6jVIpgwYNwrnnnpvw5/niiy/AcRy++OKLqLf97rvvcOqppyIrKwscx2Hr1q0J3z6i5+8mXbn22msxaNCgVG9GQjl06BA4jsMrr7yS9Od+5ZVXwHEcDh06lPTnJvoGVNwSfQa2Qw3379tvv031Jspm0KBB4DgOc+bMCXn98uXLxdf5/fffx/z4u3btwkMPPZQWByOXy4Wf//znMJvNePrpp/Haa6+hqqoqYc/Hvlfh3tdzzz23R6HEPotf/vKXIe/zwAMPiLcJd0J1ySWXgOM43HvvvSGvZycD7J9er8eQIUNwzTXX4ODBg1FfF/tOcRwHjUaD/Px8jBs3DjfeeCM2bdoU9f5E7LCCM/B9LywsxPz587Fx48ZUb17M/PnPf8b777+f6s0g+iC6VG8AQSSbP/7xjxg8eHCPy4cNG5aCrVEOk8mEdevWoaGhAWVlZUHXvf766zCZTLDb7bIee9euXVi6dClmzZqlekWruroatbW1WL58edjiUQ2YTCa88847eOGFF2AwGIKue/PNNyN+Xh0dHVi5ciUGDRqEN998E4899hg4jgt52zvuuAMnn3wyXC4XtmzZgr///e/46KOP8NNPP6GioiLiNk6cOBF33303AKCzsxO7d+/G22+/jeXLl+Ouu+7CU089FXR7m80GnS79DyvLly+H1+tN2fNffvnlWLBgATweD/bt24cXXngBs2fPxnfffYdx48albLti5c9//jMuvvhiXHDBBUGXX3311bjssstgNBpTs2FEryf990IEESPz58/HSSedlOrNUJzTTjsN3333Hf7973/j17/+tXj50aNHsWHDBlx44YV45513UriFyaGpqQkAkJ+fr9hjWiwWZGVlKfZ4ADBv3jx88MEH+Pjjj3H++eeLl3/zzTeoqanBRRddFPbzeuedd+DxePDyyy/jjDPOwPr16zFz5syQt50xYwYuvvhiAMAvfvELnHDCCbjjjjvw6quv4v7774+4jZWVlbjqqquCLlu2bBmuuOIKPP300xg+fDhuvvlm8TqTySTptasdvV6f0uefNGlS0Ps+Y8YMzJ8/Hy+++CJeeOGFFG6ZMmi1Wmi12lRvBtGLIVsCQcRAc3MzLrnkEuTm5qKoqAi//vWve6hrbrcbDz/8MIYOHQqj0YhBgwbhd7/7HRwOh3ibxYsXo6ioCDzPi5fdfvvt4DgOzzzzjHhZY2MjOI7Diy++GHXbTCYTfvazn+GNN94IuvzNN99EQUEBzj777JD327NnDy6++GIUFhbCZDLhpJNOwgcffCBe/8orr+DnP/85AGD27Nnikml37+tXX32FKVOmwGQyYciQIfjXv/7V47kOHjyIn//85ygsLERmZiamTp2Kjz76qMftjh49igsuuABZWVkoLS3FXXfdFfT+hePaa68Vi7yf//zn4DgOs2bNEq9fu3YtZsyYgaysLOTn5+P888/H7t27gx6D+at37dqFK664AgUFBZg+fXrU546VyspKnH766T0+r9dffx3jxo3D2LFjw9739ddfx9y5czF79myMGjUKr7/+uuTnPeOMMwAANTU1srY7IyMDr732GgoLC/GnP/0p6Dsczqu+b98+XHXVVcjLy0NJSQkefPBB8DyPI0eO4Pzzz0dubi7Kysrw5JNP9ng+h8OBJUuWYNiwYTAajRgwYAB++9vf9vg+cByH2267De+//z7Gjh0Lo9GIMWPGYPXq1UG36+zsxJ133olBgwbBaDSitLQUc+fOxZYtW8TbhPLcWiwW3H333RgwYACMRiNGjBiBJ554Iuj1x7IdsTBjxgwAwqpEIG1tbbjzzjvFbRo2bBiWLVvWQ3Vua2vDtddei7y8POTn52PRokVoa2vr8TyzZs0K+r0wQr0fXq8X//d//4dx48bBZDKhpKQE8+bNE+05HMfBYrHg1VdfFfcZ1157LYDwntsXXngBY8aMgdFoREVFBW699dYe2zlr1iyMHTsWu3btwuzZs5GZmYnKyko8/vjjkd9Eok9BxS3R52hvb0dzc3PQv5aWFkn3veSSS2C32/Hoo49iwYIFeOaZZ3DjjTcG3eaXv/wl/vCHP2DSpEl4+umnMXPmTDz66KO47LLLxNvMmDEDZrMZO3fuFC/bsGEDNBoNNmzYEHQZAJx++umStu+KK67A5s2bgw6Cb7zxBi6++OKQatTOnTsxdepU7N69G/fddx+efPJJZGVl4YILLsB7770nPvcdd9wBAPjd736H1157Da+99hpGjRolPs6BAwdw8cUXY+7cuXjyySdRUFCAa6+9Nuj1NTY24tRTT8Unn3yCW265BX/6059gt9tx3nnnic8FCEvbZ555Jj755BPcdttteOCBB7Bhwwb89re/jfr6f/WrX+F3v/sdAGE5/rXXXsMDDzwAAPjss89w9tlno6mpCQ899BAWL16Mb775BqeddlpIL/HPf/5zWK1W/PnPf8YNN9wQ9bnlcMUVV2DlypXo6uoCIJwYvf3227jiiivC3ufYsWNYt24dLr/8cgDCEvZ///tfOJ1OSc/JvhtFRUWytzs7OxsXXngh6urqsGvXrqi3v/TSS+H1evHYY4/hlFNOwSOPPIK//vWvmDt3LiorK7Fs2TIMGzYMv/nNb7B+/Xrxfl6vF+eddx6eeOIJLFy4EM8++ywuuOACPP3007j00kt7PM9XX32FW265BZdddhkef/xx2O12XHTRRUG/75tuugkvvvgiLrroIrzwwgv4zW9+g4yMjB4nOYHwPI/zzjsPTz/9NObNm4ennnoKI0aMwD333IPFixfL2o5YYN/PgoIC8TKr1YqZM2dixYoVuOaaa/DMM8/gtNNOw/333x+0TTzP4/zzz8drr72Gq666Co888giOHj2KRYsWydoWxvXXXy8W1suWLcN9990Hk8kk9i689tprMBqNmDFjhrjP+NWvfhX28R566CHceuutqKiowJNPPomLLroIf/vb33DWWWfB5XIF3ba1tRXz5s3DhAkT8OSTT2LkyJG499578fHHH8f1moheBE8QfYR//vOfPICQ/4xGY9BtAfBLliwR/16yZAkPgD/vvPOCbnfLLbfwAPht27bxPM/zW7du5QHwv/zlL4Nu95vf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\n" |
|
|
2620 |
}, |
|
|
2621 |
"metadata": {} |
|
|
2622 |
} |
|
|
2623 |
] |
|
|
2624 |
}, |
|
|
2625 |
{ |
|
|
2626 |
"cell_type": "code", |
|
|
2627 |
"source": [ |
|
|
2628 |
"optimal_dims = 40 # Example, replace with the value from the plot\n", |
|
|
2629 |
"\n", |
|
|
2630 |
"# Apply UMAP with optimal dimensions\n", |
|
|
2631 |
"umap_reducer = umap.UMAP(n_components=optimal_dims, random_state=42)\n", |
|
|
2632 |
"reduced_embeddings = umap_reducer.fit_transform(embedding_data)\n", |
|
|
2633 |
"\n", |
|
|
2634 |
"# Add reduced embeddings back to the DataFrame\n", |
|
|
2635 |
"for i in range(optimal_dims):\n", |
|
|
2636 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]" |
|
|
2637 |
], |
|
|
2638 |
"metadata": { |
|
|
2639 |
"id": "XZbYj6Eqp9Hf", |
|
|
2640 |
"colab": { |
|
|
2641 |
"base_uri": "https://localhost:8080/" |
|
|
2642 |
}, |
|
|
2643 |
"outputId": "54e88763-5ff2-401e-e6b1-e6d3f6d1705c" |
|
|
2644 |
}, |
|
|
2645 |
"execution_count": null, |
|
|
2646 |
"outputs": [ |
|
|
2647 |
{ |
|
|
2648 |
"output_type": "stream", |
|
|
2649 |
"name": "stderr", |
|
|
2650 |
"text": [ |
|
|
2651 |
"/usr/local/lib/python3.10/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", |
|
|
2652 |
" warnings.warn(\n", |
|
|
2653 |
"/usr/local/lib/python3.10/dist-packages/umap/umap_.py:1952: UserWarning: n_jobs value 1 overridden to 1 by setting random_state. Use no seed for parallelism.\n", |
|
|
2654 |
" warn(\n", |
|
|
2655 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2656 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2657 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2658 |
"\n", |
|
|
2659 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2660 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2661 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2662 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2663 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2664 |
"\n", |
|
|
2665 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2666 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2667 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2668 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2669 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2670 |
"\n", |
|
|
2671 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2672 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2673 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2674 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2675 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2676 |
"\n", |
|
|
2677 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2678 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2679 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2680 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2681 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2682 |
"\n", |
|
|
2683 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2684 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2685 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2686 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2687 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2688 |
"\n", |
|
|
2689 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2690 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2691 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2692 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2693 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2694 |
"\n", |
|
|
2695 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2696 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2697 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2698 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2699 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2700 |
"\n", |
|
|
2701 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2702 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2703 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2704 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2705 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2706 |
"\n", |
|
|
2707 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2708 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2709 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2710 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2711 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2712 |
"\n", |
|
|
2713 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2714 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2715 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2716 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2717 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2718 |
"\n", |
|
|
2719 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2720 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2721 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2722 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2723 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2724 |
"\n", |
|
|
2725 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2726 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2727 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2728 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2729 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2730 |
"\n", |
|
|
2731 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2732 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2733 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2734 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2735 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2736 |
"\n", |
|
|
2737 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2738 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2739 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2740 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2741 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2742 |
"\n", |
|
|
2743 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2744 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2745 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2746 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2747 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2748 |
"\n", |
|
|
2749 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2750 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2751 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2752 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2753 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2754 |
"\n", |
|
|
2755 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2756 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2757 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2758 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2759 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2760 |
"\n", |
|
|
2761 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2762 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2763 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2764 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2765 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2766 |
"\n", |
|
|
2767 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2768 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2769 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2770 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2771 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2772 |
"\n", |
|
|
2773 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2774 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2775 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2776 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2777 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2778 |
"\n", |
|
|
2779 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2780 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2781 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2782 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2783 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2784 |
"\n", |
|
|
2785 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2786 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2787 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2788 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2789 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2790 |
"\n", |
|
|
2791 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2792 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2793 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2794 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2795 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2796 |
"\n", |
|
|
2797 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2798 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2799 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2800 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2801 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2802 |
"\n", |
|
|
2803 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2804 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2805 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2806 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2807 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2808 |
"\n", |
|
|
2809 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2810 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2811 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2812 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2813 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2814 |
"\n", |
|
|
2815 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2816 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2817 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2818 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2819 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2820 |
"\n", |
|
|
2821 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2822 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2823 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2824 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2825 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2826 |
"\n", |
|
|
2827 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2828 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2829 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2830 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2831 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2832 |
"\n", |
|
|
2833 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2834 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2835 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2836 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2837 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2838 |
"\n", |
|
|
2839 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2840 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2841 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2842 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2843 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2844 |
"\n", |
|
|
2845 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2846 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2847 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2848 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2849 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2850 |
"\n", |
|
|
2851 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2852 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2853 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2854 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2855 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2856 |
"\n", |
|
|
2857 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2858 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2859 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2860 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2861 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2862 |
"\n", |
|
|
2863 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2864 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2865 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2866 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2867 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2868 |
"\n", |
|
|
2869 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2870 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2871 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2872 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2873 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2874 |
"\n", |
|
|
2875 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2876 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2877 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2878 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2879 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2880 |
"\n", |
|
|
2881 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2882 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2883 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2884 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2885 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2886 |
"\n", |
|
|
2887 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2888 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n", |
|
|
2889 |
"<ipython-input-14-de94449a2449>:9: SettingWithCopyWarning: \n", |
|
|
2890 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2891 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2892 |
"\n", |
|
|
2893 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2894 |
" top_1000_rows[f\"UMAP_{i+1}\"] = reduced_embeddings[:, i]\n" |
|
|
2895 |
] |
|
|
2896 |
} |
|
|
2897 |
] |
|
|
2898 |
}, |
|
|
2899 |
{ |
|
|
2900 |
"cell_type": "code", |
|
|
2901 |
"source": [ |
|
|
2902 |
"import numpy as np\n", |
|
|
2903 |
"import pandas as pd\n", |
|
|
2904 |
"from sklearn.model_selection import train_test_split\n", |
|
|
2905 |
"from sklearn.preprocessing import StandardScaler, OneHotEncoder\n", |
|
|
2906 |
"from sklearn.metrics import mean_squared_error\n", |
|
|
2907 |
"import tensorflow as tf\n", |
|
|
2908 |
"from tensorflow.keras.models import Sequential\n", |
|
|
2909 |
"from tensorflow.keras.layers import SimpleRNN, Dense, Dropout\n", |
|
|
2910 |
"from tensorflow.keras.optimizers import Adam\n", |
|
|
2911 |
"from sklearn.compose import ColumnTransformer\n", |
|
|
2912 |
"from sklearn.pipeline import Pipeline\n", |
|
|
2913 |
"\n", |
|
|
2914 |
"# Step 1: Prepare features and target\n", |
|
|
2915 |
"# Select relevant columns\n", |
|
|
2916 |
"input_columns = [\n", |
|
|
2917 |
" 'Sex', 'Age', 'Phases', 'Enrollment',\n", |
|
|
2918 |
" 'Study Title', 'Study Status', 'Brief Summary', 'Study Results',\n", |
|
|
2919 |
" 'Conditions', 'Interventions', 'Primary Outcome Measures',\n", |
|
|
2920 |
" 'Funder Type', 'Study Type', 'Study Design'\n", |
|
|
2921 |
"]\n", |
|
|
2922 |
"\n", |
|
|
2923 |
"target_column = 'Time taken for Enrollment'\n", |
|
|
2924 |
"\n", |
|
|
2925 |
"# Ensure the columns exist in the dataframe after UMAP processing\n", |
|
|
2926 |
"input_data = top_1000_rows[input_columns]\n", |
|
|
2927 |
"target_data = top_1000_rows[target_column]\n", |
|
|
2928 |
"\n", |
|
|
2929 |
"# Step 2: Preprocess data\n", |
|
|
2930 |
"# Handling categorical features using one-hot encoding and scaling\n", |
|
|
2931 |
"# Columns for one-hot encoding\n", |
|
|
2932 |
"categorical_columns = ['Sex', 'Age', 'Phases', 'Enrollment']\n", |
|
|
2933 |
"\n", |
|
|
2934 |
"# Scale numerical features (UMAP embeddings)\n", |
|
|
2935 |
"scaler = StandardScaler()\n", |
|
|
2936 |
"\n", |
|
|
2937 |
"# Identify numerical columns (excluding categorical and text columns)\n", |
|
|
2938 |
"numerical_columns = [col for col in input_columns if col not in categorical_columns and col not in text_columns]\n", |
|
|
2939 |
"\n", |
|
|
2940 |
"# Ensure all columns are of numeric type before applying preprocessing\n", |
|
|
2941 |
"# Convert to numeric, replacing non-numeric values with NaN\n", |
|
|
2942 |
"for col in categorical_columns + numerical_columns:\n", |
|
|
2943 |
" input_data[col] = pd.to_numeric(input_data[col], errors='coerce')\n", |
|
|
2944 |
"\n", |
|
|
2945 |
"# Impute NaN values if any (you can use a different strategy if needed)\n", |
|
|
2946 |
"input_data = input_data.fillna(0)\n", |
|
|
2947 |
"\n", |
|
|
2948 |
"# Column transformer to apply one-hot encoding to categorical columns and scaling to numerical columns\n", |
|
|
2949 |
"preprocessor = ColumnTransformer(\n", |
|
|
2950 |
" transformers=[\n", |
|
|
2951 |
" ('cat', OneHotEncoder(handle_unknown='ignore', sparse_output=False), categorical_columns),\n", |
|
|
2952 |
" ('num', scaler, numerical_columns)\n", |
|
|
2953 |
" ])\n", |
|
|
2954 |
"\n", |
|
|
2955 |
"# Apply the preprocessor to the input data\n", |
|
|
2956 |
"X = preprocessor.fit_transform(input_data)\n", |
|
|
2957 |
"\n", |
|
|
2958 |
"# For the target, make sure it's in a numeric format\n", |
|
|
2959 |
"y = target_data.values\n", |
|
|
2960 |
"y = pd.to_numeric(y, errors='coerce')\n", |
|
|
2961 |
"\n", |
|
|
2962 |
"# Impute NaN values if any (you can use a different strategy if needed)\n", |
|
|
2963 |
"y = np.nan_to_num(y) # Replace NaN with 0\n", |
|
|
2964 |
"# --- End of the code to insert ---\n", |
|
|
2965 |
"\n", |
|
|
2966 |
"\n", |
|
|
2967 |
"# Step 3: Split data into training and testing sets (80:20)\n", |
|
|
2968 |
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)" |
|
|
2969 |
], |
|
|
2970 |
"metadata": { |
|
|
2971 |
"id": "mm6YOeG_p-I0", |
|
|
2972 |
"colab": { |
|
|
2973 |
"base_uri": "https://localhost:8080/" |
|
|
2974 |
}, |
|
|
2975 |
"outputId": "eda3e0ca-7be4-454f-c7cf-3705c158c2dc" |
|
|
2976 |
}, |
|
|
2977 |
"execution_count": null, |
|
|
2978 |
"outputs": [ |
|
|
2979 |
{ |
|
|
2980 |
"output_type": "stream", |
|
|
2981 |
"name": "stderr", |
|
|
2982 |
"text": [ |
|
|
2983 |
"<ipython-input-26-207c951d05e0>:42: SettingWithCopyWarning: \n", |
|
|
2984 |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", |
|
|
2985 |
"Try using .loc[row_indexer,col_indexer] = value instead\n", |
|
|
2986 |
"\n", |
|
|
2987 |
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", |
|
|
2988 |
" input_data[col] = pd.to_numeric(input_data[col], errors='coerce')\n" |
|
|
2989 |
] |
|
|
2990 |
} |
|
|
2991 |
] |
|
|
2992 |
}, |
|
|
2993 |
{ |
|
|
2994 |
"cell_type": "code", |
|
|
2995 |
"source": [ |
|
|
2996 |
"from tensorflow.keras.layers import Bidirectional, LSTM\n", |
|
|
2997 |
"\n", |
|
|
2998 |
"# Step 4: Build the BiLSTM model\n", |
|
|
2999 |
"bi_lstm_model = Sequential()\n", |
|
|
3000 |
"\n", |
|
|
3001 |
"# Input layer: BiLSTM expects 3D input (samples, time steps, features)\n", |
|
|
3002 |
"# Reshaping input to (samples, time steps, features)\n", |
|
|
3003 |
"bi_lstm_model.add(tf.keras.layers.Reshape((1, X_train.shape[1]), input_shape=(X_train.shape[1],)))\n", |
|
|
3004 |
"\n", |
|
|
3005 |
"# BiLSTM layer with 64 units\n", |
|
|
3006 |
"bi_lstm_model.add(Bidirectional(LSTM(64, activation='relu', return_sequences=False)))\n", |
|
|
3007 |
"\n", |
|
|
3008 |
"# Dropout layer to prevent overfitting\n", |
|
|
3009 |
"bi_lstm_model.add(Dropout(0.2))\n", |
|
|
3010 |
"\n", |
|
|
3011 |
"# Output layer: predicting a continuous value (Time taken for Enrollment)\n", |
|
|
3012 |
"bi_lstm_model.add(Dense(1))\n", |
|
|
3013 |
"\n", |
|
|
3014 |
"# Step 5: Compile the BiLSTM model\n", |
|
|
3015 |
"bi_lstm_model.compile(optimizer=Adam(), loss='mean_squared_error')\n", |
|
|
3016 |
"\n", |
|
|
3017 |
"# Step 6: Train the BiLSTM model\n", |
|
|
3018 |
"bi_lstm_history = bi_lstm_model.fit(X_train, y_train, epochs=50, batch_size=32, validation_data=(X_test, y_test))\n", |
|
|
3019 |
"\n", |
|
|
3020 |
"# Step 7: Make predictions with the BiLSTM model and evaluate the RMSE\n", |
|
|
3021 |
"y_pred_bilstm = bi_lstm_model.predict(X_test)\n", |
|
|
3022 |
"\n", |
|
|
3023 |
"# Calculate RMSE (Root Mean Squared Error) for BiLSTM model\n", |
|
|
3024 |
"rmse_bilstm = np.sqrt(mean_squared_error(y_test, y_pred_bilstm))\n", |
|
|
3025 |
"print(f\"RMSE for BiLSTM: {rmse_bilstm}\")\n" |
|
|
3026 |
], |
|
|
3027 |
"metadata": { |
|
|
3028 |
"id": "0MpM2NkTqGYe", |
|
|
3029 |
"colab": { |
|
|
3030 |
"base_uri": "https://localhost:8080/" |
|
|
3031 |
}, |
|
|
3032 |
"outputId": "ed87b58e-5718-4f35-da94-a8a36b3648f0" |
|
|
3033 |
}, |
|
|
3034 |
"execution_count": null, |
|
|
3035 |
"outputs": [ |
|
|
3036 |
{ |
|
|
3037 |
"output_type": "stream", |
|
|
3038 |
"name": "stderr", |
|
|
3039 |
"text": [ |
|
|
3040 |
"/usr/local/lib/python3.10/dist-packages/keras/src/layers/reshaping/reshape.py:39: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n", |
|
|
3041 |
" super().__init__(**kwargs)\n" |
|
|
3042 |
] |
|
|
3043 |
}, |
|
|
3044 |
{ |
|
|
3045 |
"output_type": "stream", |
|
|
3046 |
"name": "stdout", |
|
|
3047 |
"text": [ |
|
|
3048 |
"Epoch 1/50\n", |
|
|
3049 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 36ms/step - loss: 667.7067 - val_loss: 609.3492\n", |
|
|
3050 |
"Epoch 2/50\n", |
|
|
3051 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 11ms/step - loss: 617.5209 - val_loss: 591.2498\n", |
|
|
3052 |
"Epoch 3/50\n", |
|
|
3053 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 9ms/step - loss: 561.6722 - val_loss: 557.8972\n", |
|
|
3054 |
"Epoch 4/50\n", |
|
|
3055 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 10ms/step - loss: 528.3793 - val_loss: 507.4259\n", |
|
|
3056 |
"Epoch 5/50\n", |
|
|
3057 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 15ms/step - loss: 455.1757 - val_loss: 443.5311\n", |
|
|
3058 |
"Epoch 6/50\n", |
|
|
3059 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 17ms/step - loss: 386.5001 - val_loss: 378.3217\n", |
|
|
3060 |
"Epoch 7/50\n", |
|
|
3061 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 22ms/step - loss: 335.8933 - val_loss: 329.0683\n", |
|
|
3062 |
"Epoch 8/50\n", |
|
|
3063 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 16ms/step - loss: 278.2339 - val_loss: 300.2128\n", |
|
|
3064 |
"Epoch 9/50\n", |
|
|
3065 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - loss: 305.0649 - val_loss: 287.5830\n", |
|
|
3066 |
"Epoch 10/50\n", |
|
|
3067 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 20ms/step - loss: 273.1591 - val_loss: 280.5639\n", |
|
|
3068 |
"Epoch 11/50\n", |
|
|
3069 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 16ms/step - loss: 234.1577 - val_loss: 276.5512\n", |
|
|
3070 |
"Epoch 12/50\n", |
|
|
3071 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 22ms/step - loss: 235.5674 - val_loss: 273.2498\n", |
|
|
3072 |
"Epoch 13/50\n", |
|
|
3073 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 14ms/step - loss: 216.2296 - val_loss: 270.5114\n", |
|
|
3074 |
"Epoch 14/50\n", |
|
|
3075 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 16ms/step - loss: 216.4830 - val_loss: 268.1384\n", |
|
|
3076 |
"Epoch 15/50\n", |
|
|
3077 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 16ms/step - loss: 241.6802 - val_loss: 266.0169\n", |
|
|
3078 |
"Epoch 16/50\n", |
|
|
3079 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 19ms/step - loss: 197.7046 - val_loss: 264.7904\n", |
|
|
3080 |
"Epoch 17/50\n", |
|
|
3081 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 19ms/step - loss: 254.8440 - val_loss: 263.2259\n", |
|
|
3082 |
"Epoch 18/50\n", |
|
|
3083 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 22ms/step - loss: 217.4115 - val_loss: 262.4696\n", |
|
|
3084 |
"Epoch 19/50\n", |
|
|
3085 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 10ms/step - loss: 220.9622 - val_loss: 261.7163\n", |
|
|
3086 |
"Epoch 20/50\n", |
|
|
3087 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 19ms/step - loss: 203.3700 - val_loss: 261.1432\n", |
|
|
3088 |
"Epoch 21/50\n", |
|
|
3089 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 9ms/step - loss: 204.3532 - val_loss: 260.6401\n", |
|
|
3090 |
"Epoch 22/50\n", |
|
|
3091 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 11ms/step - loss: 206.5609 - val_loss: 260.3468\n", |
|
|
3092 |
"Epoch 23/50\n", |
|
|
3093 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 10ms/step - loss: 200.0678 - val_loss: 259.9577\n", |
|
|
3094 |
"Epoch 24/50\n", |
|
|
3095 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 10ms/step - loss: 205.6685 - val_loss: 259.8051\n", |
|
|
3096 |
"Epoch 25/50\n", |
|
|
3097 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 200.1108 - val_loss: 259.6185\n", |
|
|
3098 |
"Epoch 26/50\n", |
|
|
3099 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 12ms/step - loss: 190.1116 - val_loss: 259.4397\n", |
|
|
3100 |
"Epoch 27/50\n", |
|
|
3101 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - loss: 188.8570 - val_loss: 259.6147\n", |
|
|
3102 |
"Epoch 28/50\n", |
|
|
3103 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - loss: 192.8143 - val_loss: 260.2402\n", |
|
|
3104 |
"Epoch 29/50\n", |
|
|
3105 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 10ms/step - loss: 173.7915 - val_loss: 260.1749\n", |
|
|
3106 |
"Epoch 30/50\n", |
|
|
3107 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - loss: 184.3625 - val_loss: 260.5374\n", |
|
|
3108 |
"Epoch 31/50\n", |
|
|
3109 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - loss: 171.2388 - val_loss: 260.4700\n", |
|
|
3110 |
"Epoch 32/50\n", |
|
|
3111 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 14ms/step - loss: 178.1833 - val_loss: 261.1990\n", |
|
|
3112 |
"Epoch 33/50\n", |
|
|
3113 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 178.0006 - val_loss: 261.4209\n", |
|
|
3114 |
"Epoch 34/50\n", |
|
|
3115 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 187.6684 - val_loss: 262.2680\n", |
|
|
3116 |
"Epoch 35/50\n", |
|
|
3117 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 16ms/step - loss: 159.2341 - val_loss: 262.3969\n", |
|
|
3118 |
"Epoch 36/50\n", |
|
|
3119 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 160.0466 - val_loss: 262.5146\n", |
|
|
3120 |
"Epoch 37/50\n", |
|
|
3121 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 14ms/step - loss: 176.0917 - val_loss: 263.1417\n", |
|
|
3122 |
"Epoch 38/50\n", |
|
|
3123 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 16ms/step - loss: 151.0455 - val_loss: 263.6153\n", |
|
|
3124 |
"Epoch 39/50\n", |
|
|
3125 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 24ms/step - loss: 146.4944 - val_loss: 264.1271\n", |
|
|
3126 |
"Epoch 40/50\n", |
|
|
3127 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 19ms/step - loss: 165.9863 - val_loss: 264.9947\n", |
|
|
3128 |
"Epoch 41/50\n", |
|
|
3129 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 17ms/step - loss: 153.2215 - val_loss: 265.0475\n", |
|
|
3130 |
"Epoch 42/50\n", |
|
|
3131 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 18ms/step - loss: 154.0866 - val_loss: 265.6365\n", |
|
|
3132 |
"Epoch 43/50\n", |
|
|
3133 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 26ms/step - loss: 147.2036 - val_loss: 266.3539\n", |
|
|
3134 |
"Epoch 44/50\n", |
|
|
3135 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 18ms/step - loss: 175.0763 - val_loss: 266.5692\n", |
|
|
3136 |
"Epoch 45/50\n", |
|
|
3137 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 16ms/step - loss: 175.0344 - val_loss: 267.5154\n", |
|
|
3138 |
"Epoch 46/50\n", |
|
|
3139 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 16ms/step - loss: 154.6448 - val_loss: 267.3886\n", |
|
|
3140 |
"Epoch 47/50\n", |
|
|
3141 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 19ms/step - loss: 145.1259 - val_loss: 267.1888\n", |
|
|
3142 |
"Epoch 48/50\n", |
|
|
3143 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 20ms/step - loss: 160.2450 - val_loss: 267.4206\n", |
|
|
3144 |
"Epoch 49/50\n", |
|
|
3145 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 15ms/step - loss: 144.1925 - val_loss: 267.6102\n", |
|
|
3146 |
"Epoch 50/50\n", |
|
|
3147 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 144.6609 - val_loss: 268.0196\n", |
|
|
3148 |
"\u001b[1m7/7\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 51ms/step\n", |
|
|
3149 |
"RMSE for BiLSTM: 16.37130237010102\n" |
|
|
3150 |
] |
|
|
3151 |
} |
|
|
3152 |
] |
|
|
3153 |
}, |
|
|
3154 |
{ |
|
|
3155 |
"cell_type": "code", |
|
|
3156 |
"source": [ |
|
|
3157 |
"model = Sequential()\n", |
|
|
3158 |
"\n", |
|
|
3159 |
"# Input layer: RNN expects 3D input (samples, time steps, features)\n", |
|
|
3160 |
"# Here, we'll use a single time step (1) for each sample (flatten the data to time steps)\n", |
|
|
3161 |
"model.add(tf.keras.layers.Reshape((1, X_train.shape[1]), input_shape=(X_train.shape[1],)))\n", |
|
|
3162 |
"\n", |
|
|
3163 |
"# RNN layer with 64 units\n", |
|
|
3164 |
"model.add(SimpleRNN(64, activation='relu', return_sequences=False))\n", |
|
|
3165 |
"\n", |
|
|
3166 |
"# Dropout layer to prevent overfitting\n", |
|
|
3167 |
"model.add(Dropout(0.3))\n", |
|
|
3168 |
"\n", |
|
|
3169 |
"# Output layer: predicting a continuous value (Time taken for Enrollment)\n", |
|
|
3170 |
"model.add(Dense(1))\n", |
|
|
3171 |
"\n", |
|
|
3172 |
"# Step 5: Compile the model\n", |
|
|
3173 |
"model.compile(optimizer=Adam(), loss='mean_squared_error')\n", |
|
|
3174 |
"\n", |
|
|
3175 |
"# Step 6: Train the model\n", |
|
|
3176 |
"history = model.fit(X_train, y_train, epochs=50, batch_size=32, validation_data=(X_test, y_test))\n", |
|
|
3177 |
"\n", |
|
|
3178 |
"# Step 7: Make predictions and evaluate the model\n", |
|
|
3179 |
"y_pred = model.predict(X_test)\n", |
|
|
3180 |
"\n", |
|
|
3181 |
"# Calculate RMSE (Root Mean Squared Error)\n", |
|
|
3182 |
"rmse = np.sqrt(mean_squared_error(y_test, y_pred))\n", |
|
|
3183 |
"print(f\"RMSE: {rmse}\")" |
|
|
3184 |
], |
|
|
3185 |
"metadata": { |
|
|
3186 |
"colab": { |
|
|
3187 |
"base_uri": "https://localhost:8080/" |
|
|
3188 |
}, |
|
|
3189 |
"id": "A6JHsy5sBjRs", |
|
|
3190 |
"outputId": "997929af-bf12-4569-90ba-779b22ada812" |
|
|
3191 |
}, |
|
|
3192 |
"execution_count": null, |
|
|
3193 |
"outputs": [ |
|
|
3194 |
{ |
|
|
3195 |
"output_type": "stream", |
|
|
3196 |
"name": "stderr", |
|
|
3197 |
"text": [ |
|
|
3198 |
"/usr/local/lib/python3.10/dist-packages/keras/src/layers/reshaping/reshape.py:39: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n", |
|
|
3199 |
" super().__init__(**kwargs)\n" |
|
|
3200 |
] |
|
|
3201 |
}, |
|
|
3202 |
{ |
|
|
3203 |
"output_type": "stream", |
|
|
3204 |
"name": "stdout", |
|
|
3205 |
"text": [ |
|
|
3206 |
"Epoch 1/50\n", |
|
|
3207 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 26ms/step - loss: 579.7545 - val_loss: 598.7670\n", |
|
|
3208 |
"Epoch 2/50\n", |
|
|
3209 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 5ms/step - loss: 541.1518 - val_loss: 571.0222\n", |
|
|
3210 |
"Epoch 3/50\n", |
|
|
3211 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 532.0207 - val_loss: 529.2407\n", |
|
|
3212 |
"Epoch 4/50\n", |
|
|
3213 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 454.2565 - val_loss: 477.3809\n", |
|
|
3214 |
"Epoch 5/50\n", |
|
|
3215 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - loss: 415.7916 - val_loss: 424.5004\n", |
|
|
3216 |
"Epoch 6/50\n", |
|
|
3217 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 452.6029 - val_loss: 376.9656\n", |
|
|
3218 |
"Epoch 7/50\n", |
|
|
3219 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - loss: 358.6606 - val_loss: 340.9701\n", |
|
|
3220 |
"Epoch 8/50\n", |
|
|
3221 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 310.2562 - val_loss: 314.1212\n", |
|
|
3222 |
"Epoch 9/50\n", |
|
|
3223 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 305.6849 - val_loss: 297.5801\n", |
|
|
3224 |
"Epoch 10/50\n", |
|
|
3225 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 9ms/step - loss: 249.7126 - val_loss: 288.5488\n", |
|
|
3226 |
"Epoch 11/50\n", |
|
|
3227 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 14ms/step - loss: 230.8337 - val_loss: 281.9182\n", |
|
|
3228 |
"Epoch 12/50\n", |
|
|
3229 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 7ms/step - loss: 264.7994 - val_loss: 277.4290\n", |
|
|
3230 |
"Epoch 13/50\n", |
|
|
3231 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 12ms/step - loss: 230.6227 - val_loss: 274.1347\n", |
|
|
3232 |
"Epoch 14/50\n", |
|
|
3233 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 224.2143 - val_loss: 271.3199\n", |
|
|
3234 |
"Epoch 15/50\n", |
|
|
3235 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 218.0156 - val_loss: 269.0135\n", |
|
|
3236 |
"Epoch 16/50\n", |
|
|
3237 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - loss: 235.3152 - val_loss: 266.9712\n", |
|
|
3238 |
"Epoch 17/50\n", |
|
|
3239 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 7ms/step - loss: 251.2175 - val_loss: 265.0502\n", |
|
|
3240 |
"Epoch 18/50\n", |
|
|
3241 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - loss: 251.1464 - val_loss: 263.4379\n", |
|
|
3242 |
"Epoch 19/50\n", |
|
|
3243 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 220.6263 - val_loss: 261.9560\n", |
|
|
3244 |
"Epoch 20/50\n", |
|
|
3245 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - loss: 232.6349 - val_loss: 260.8833\n", |
|
|
3246 |
"Epoch 21/50\n", |
|
|
3247 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 7ms/step - loss: 230.8253 - val_loss: 259.8926\n", |
|
|
3248 |
"Epoch 22/50\n", |
|
|
3249 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 7ms/step - loss: 226.6449 - val_loss: 258.7480\n", |
|
|
3250 |
"Epoch 23/50\n", |
|
|
3251 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - loss: 211.2643 - val_loss: 258.2128\n", |
|
|
3252 |
"Epoch 24/50\n", |
|
|
3253 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - loss: 204.0192 - val_loss: 257.8778\n", |
|
|
3254 |
"Epoch 25/50\n", |
|
|
3255 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 7ms/step - loss: 246.8270 - val_loss: 257.0885\n", |
|
|
3256 |
"Epoch 26/50\n", |
|
|
3257 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 7ms/step - loss: 221.6270 - val_loss: 256.7341\n", |
|
|
3258 |
"Epoch 27/50\n", |
|
|
3259 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 190.9916 - val_loss: 256.3143\n", |
|
|
3260 |
"Epoch 28/50\n", |
|
|
3261 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - loss: 205.6945 - val_loss: 256.1562\n", |
|
|
3262 |
"Epoch 29/50\n", |
|
|
3263 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 7ms/step - loss: 238.1927 - val_loss: 255.8900\n", |
|
|
3264 |
"Epoch 30/50\n", |
|
|
3265 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 7ms/step - loss: 199.9858 - val_loss: 255.9863\n", |
|
|
3266 |
"Epoch 31/50\n", |
|
|
3267 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - loss: 218.4140 - val_loss: 256.0137\n", |
|
|
3268 |
"Epoch 32/50\n", |
|
|
3269 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 8ms/step - loss: 233.9201 - val_loss: 255.7076\n", |
|
|
3270 |
"Epoch 33/50\n", |
|
|
3271 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 7ms/step - loss: 216.9118 - val_loss: 256.2441\n", |
|
|
3272 |
"Epoch 34/50\n", |
|
|
3273 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 11ms/step - loss: 214.1853 - val_loss: 255.9830\n", |
|
|
3274 |
"Epoch 35/50\n", |
|
|
3275 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 9ms/step - loss: 216.3486 - val_loss: 256.2111\n", |
|
|
3276 |
"Epoch 36/50\n", |
|
|
3277 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 10ms/step - loss: 175.9630 - val_loss: 256.3767\n", |
|
|
3278 |
"Epoch 37/50\n", |
|
|
3279 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 9ms/step - loss: 204.1494 - val_loss: 256.2661\n", |
|
|
3280 |
"Epoch 38/50\n", |
|
|
3281 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 6ms/step - loss: 205.1333 - val_loss: 256.2394\n", |
|
|
3282 |
"Epoch 39/50\n", |
|
|
3283 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - loss: 194.3962 - val_loss: 256.8536\n", |
|
|
3284 |
"Epoch 40/50\n", |
|
|
3285 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 8ms/step - loss: 192.2582 - val_loss: 257.1403\n", |
|
|
3286 |
"Epoch 41/50\n", |
|
|
3287 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 200.7191 - val_loss: 257.0217\n", |
|
|
3288 |
"Epoch 42/50\n", |
|
|
3289 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - loss: 179.5457 - val_loss: 257.5062\n", |
|
|
3290 |
"Epoch 43/50\n", |
|
|
3291 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 182.3336 - val_loss: 257.6974\n", |
|
|
3292 |
"Epoch 44/50\n", |
|
|
3293 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 186.9329 - val_loss: 258.0083\n", |
|
|
3294 |
"Epoch 45/50\n", |
|
|
3295 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 175.0525 - val_loss: 257.9814\n", |
|
|
3296 |
"Epoch 46/50\n", |
|
|
3297 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 208.5019 - val_loss: 258.1638\n", |
|
|
3298 |
"Epoch 47/50\n", |
|
|
3299 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 7ms/step - loss: 204.7254 - val_loss: 258.5562\n", |
|
|
3300 |
"Epoch 48/50\n", |
|
|
3301 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - loss: 185.3362 - val_loss: 258.8849\n", |
|
|
3302 |
"Epoch 49/50\n", |
|
|
3303 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - loss: 185.8382 - val_loss: 259.3331\n", |
|
|
3304 |
"Epoch 50/50\n", |
|
|
3305 |
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4ms/step - loss: 179.8962 - val_loss: 259.4713\n", |
|
|
3306 |
"\u001b[1m7/7\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 24ms/step\n", |
|
|
3307 |
"RMSE: 16.108112997784122\n" |
|
|
3308 |
] |
|
|
3309 |
} |
|
|
3310 |
] |
|
|
3311 |
}, |
|
|
3312 |
{ |
|
|
3313 |
"cell_type": "code", |
|
|
3314 |
"source": [], |
|
|
3315 |
"metadata": { |
|
|
3316 |
"id": "cB3wFHSgCFjN" |
|
|
3317 |
}, |
|
|
3318 |
"execution_count": null, |
|
|
3319 |
"outputs": [] |
|
|
3320 |
} |
|
|
3321 |
] |
|
|
3322 |
} |