Train_SimpleDataPrice+EMA 2.ipynb
102 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Using TensorFlow backend.\n",
"/Users/yangyoonji/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/dtypes.py:526: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
" _np_qint8 = np.dtype([(\"qint8\", np.int8, 1)])\n",
"/Users/yangyoonji/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/dtypes.py:527: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
" _np_quint8 = np.dtype([(\"quint8\", np.uint8, 1)])\n",
"/Users/yangyoonji/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/dtypes.py:528: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
" _np_qint16 = np.dtype([(\"qint16\", np.int16, 1)])\n",
"/Users/yangyoonji/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/dtypes.py:529: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
" _np_quint16 = np.dtype([(\"quint16\", np.uint16, 1)])\n",
"/Users/yangyoonji/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/dtypes.py:530: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
" _np_qint32 = np.dtype([(\"qint32\", np.int32, 1)])\n",
"/Users/yangyoonji/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/dtypes.py:535: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
" np_resource = np.dtype([(\"resource\", np.ubyte, 1)])\n"
]
}
],
"source": [
"from keras.models import Model, Sequential\n",
"from keras.layers import Input, Dense, LSTM, Bidirectional\n",
"from keras.callbacks import EarlyStopping, ModelCheckpoint\n",
"from keras import backend as K\n",
"import matplotlib.pyplot as plt\n",
"from keras.layers.core import Dense, Activation, Dropout\n",
"import pandas as pd\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"train = pd.read_csv('/Users/yangyoonji/Documents/2020_2학기/캡스톤디자인/data/scaled/train_scaled.csv')\n",
"test = pd.read_csv('/Users/yangyoonji/Documents/2020_2학기/캡스톤디자인/data/recent_test/recent_test_scaled.csv')\n",
"validation = pd.read_csv('/Users/yangyoonji/Documents/2020_2학기/캡스톤디자인/data/scaled/validation_scaled.csv')"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"ename": "KeyError",
"evalue": "'Unnamed: 0'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m 2656\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2657\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2658\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n",
"\u001b[0;31mKeyError\u001b[0m: 'Unnamed: 0'",
"\nDuring handling of the above exception, another exception occurred:\n",
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-7-92d7078de5a4>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mdel\u001b[0m \u001b[0mtrain\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Unnamed: 0'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0;32mdel\u001b[0m \u001b[0mtest\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Unnamed: 0'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mdel\u001b[0m \u001b[0mvalidation\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Unnamed: 0'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/pandas/core/generic.py\u001b[0m in \u001b[0;36m__delitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 3313\u001b[0m \u001b[0;31m# there was no match, this call should raise the appropriate\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3314\u001b[0m \u001b[0;31m# exception:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3315\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_data\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdelete\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3316\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3317\u001b[0m \u001b[0;31m# delete from the caches\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/pandas/core/internals/managers.py\u001b[0m in \u001b[0;36mdelete\u001b[0;34m(self, item)\u001b[0m\n\u001b[1;32m 983\u001b[0m \u001b[0mDelete\u001b[0m \u001b[0mselected\u001b[0m \u001b[0mitem\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mitems\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mnon\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0munique\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32min\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mplace\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 984\u001b[0m \"\"\"\n\u001b[0;32m--> 985\u001b[0;31m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 986\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 987\u001b[0m \u001b[0mis_deleted\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mzeros\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbool_\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m 2657\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2658\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2659\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_maybe_cast_indexer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2660\u001b[0m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_indexer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtolerance\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtolerance\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2661\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mindexer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m1\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mindexer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msize\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n",
"\u001b[0;31mKeyError\u001b[0m: 'Unnamed: 0'"
]
}
],
"source": [
"del train['Unnamed: 0']\n",
"del test['Unnamed: 0']\n",
"del validation['Unnamed: 0']"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"del train_EMA['Unnamed: 0']\n",
"del test_EMA['Unnamed: 0']\n",
"del val_EMA['Unnamed: 0']"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"train_EMA = pd.read_csv('/Users/yangyoonji/Documents/2020_2학기/캡스톤디자인/data/MA_scaled/close/exp/train_EMA_scaled.csv')\n",
"test_EMA = pd.read_csv('/Users/yangyoonji/Documents/2020_2학기/캡스톤디자인/data/MA_scaled/close/exp/test_EMA_scaled.csv')\n",
"val_EMA = pd.read_csv('/Users/yangyoonji/Documents/2020_2학기/캡스톤디자인/data/MA_scaled/close/exp/val_EMA_scaled.csv')"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"train = pd.concat([train, train_EMA], axis = 1)\n",
"test = pd.concat([test, test_EMA],axis = 1)\n",
"validation = pd.concat([validation,val_EMA], axis = 1)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"checking if any null values are present in train\n",
" close 0\n",
"open 0\n",
"high 0\n",
"low 0\n",
"vol 0\n",
"5 0\n",
"10 0\n",
"20 0\n",
"60 0\n",
"120 0\n",
"dtype: int64\n",
"checking if any null values are present in test\n",
" close 0\n",
"open 0\n",
"high 0\n",
"low 0\n",
"vol 0\n",
"5 0\n",
"10 0\n",
"20 0\n",
"60 0\n",
"120 0\n",
"dtype: int64\n",
"checking if any null values are present in validation\n",
" close 0\n",
"open 0\n",
"high 0\n",
"low 0\n",
"vol 0\n",
"5 0\n",
"10 0\n",
"20 0\n",
"60 0\n",
"120 0\n",
"dtype: int64\n"
]
}
],
"source": [
"# NULL value 없나 확인해보기 (지수이동평균의 경우는 결측치가 없다)\n",
"print(\"checking if any null values are present in train\\n\", train.isna().sum())\n",
"print(\"checking if any null values are present in test\\n\", test.isna().sum())\n",
"print(\"checking if any null values are present in validation\\n\", validation.isna().sum())"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"def make_dataset(data, label, window_size = 20):\n",
" feature_list = []\n",
" label_list = []\n",
" for i in range(len(data)-window_size):\n",
" feature_list.append(np.array(data.iloc[i:i+window_size]))\n",
" label_list.append(np.array(label.iloc[i+window_size]))\n",
" return np.array(feature_list), np.array(label_list) "
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"# feature , label 분리\n",
"feature_cols = ['open','high','low','vol','5','10','20','60','120']\n",
"label_cols = ['close']\n",
"\n",
"##----train_data----##\n",
"train_feature = train[feature_cols]\n",
"train_label = train[label_cols]\n",
"train_feature, train_label = make_dataset(train_feature,train_label,20)\n",
"\n",
"##----test_data----##\n",
"test_feature = test[feature_cols]\n",
"test_label = test[label_cols]\n",
"test_feature, test_label = make_dataset(test_feature,test_label,20)\n",
"\n",
"##----validation_data----##\n",
"validation_feature = validation[feature_cols]\n",
"validation_label = validation[label_cols]\n",
"validation_feature, validation_label = make_dataset(validation_feature,validation_label,20)\n"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"X_train, y_train, X_val, y_val = train_feature, train_label, validation_feature, validation_label\n",
"X_test, y_test = test_feature, test_label"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(191, 20, 9)\n",
"(191, 1)\n"
]
}
],
"source": [
"print(X_test.shape)\n",
"print(y_test.shape)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:From /Users/yangyoonji/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Colocations handled automatically by placer.\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"lstm_1 (LSTM) (None, 20, 64) 18944 \n",
"_________________________________________________________________\n",
"lstm_2 (LSTM) (None, 50) 23000 \n",
"_________________________________________________________________\n",
"dense_1 (Dense) (None, 1) 51 \n",
"=================================================================\n",
"Total params: 41,995\n",
"Trainable params: 41,995\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
}
],
"source": [
"# keras 활용한 LSTM 모델 생성\n",
"model = Sequential()\n",
"##----Input Layer----##\n",
"model.add(LSTM(64, return_sequences=True, input_shape=(20,9)))\n",
"##----Hidden Layer----##\n",
"model.add(LSTM(50, return_sequences=False))\n",
"model.add(Dense(1, activation='linear'))\n",
"##----Compile Model----##\n",
"model.compile(loss='mse',optimizer='adam')\n",
"model.summary()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:From /Users/yangyoonji/anaconda3/lib/python3.7/site-packages/tensorflow/python/ops/math_ops.py:3066: to_int32 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use tf.cast instead.\n",
"Train on 3444 samples, validate on 226 samples\n",
"Epoch 1/100\n",
"3444/3444 [==============================] - 51s 15ms/step - loss: 0.0022 - val_loss: 0.0137\n",
"Epoch 2/100\n",
"3444/3444 [==============================] - 50s 15ms/step - loss: 6.1135e-04 - val_loss: 0.0088\n",
"Epoch 3/100\n",
"3444/3444 [==============================] - 47s 14ms/step - loss: 4.1736e-04 - val_loss: 0.0066\n",
"Epoch 4/100\n",
"3444/3444 [==============================] - 49s 14ms/step - loss: 3.8157e-04 - val_loss: 0.0053\n",
"Epoch 5/100\n",
"3444/3444 [==============================] - 52s 15ms/step - loss: 2.9227e-04 - val_loss: 0.0044\n",
"Epoch 6/100\n",
"3444/3444 [==============================] - 50s 15ms/step - loss: 2.6629e-04 - val_loss: 0.0038\n",
"Epoch 7/100\n",
"3444/3444 [==============================] - 52s 15ms/step - loss: 2.6588e-04 - val_loss: 0.0038\n",
"Epoch 8/100\n",
"3444/3444 [==============================] - 47s 14ms/step - loss: 2.6004e-04 - val_loss: 0.0037\n",
"Epoch 9/100\n",
"3444/3444 [==============================] - 50s 15ms/step - loss: 2.5530e-04 - val_loss: 0.0036\n",
"Epoch 10/100\n",
"3444/3444 [==============================] - 47s 14ms/step - loss: 2.6183e-04 - val_loss: 0.0038\n"
]
}
],
"source": [
"early_stopping = EarlyStopping() \n",
"hist = model.fit(X_train, y_train, validation_data=(X_val, y_val),batch_size=5, epochs=100,callbacks=[early_stopping])"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"191/191 [==============================] - 1s 3ms/step\n"
]
}
],
"source": [
"score = model.evaluate(X_test,y_test,batch_size=5)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.002467480193121427\n"
]
}
],
"source": [
"print(score)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"predict = model.predict(X_test)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x648 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(12,9))\n",
"plt.plot(y_test, label='actual')\n",
"plt.plot(predict, label=\"prediction\")\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"actual = pd.DataFrame(y_test,columns=[\"actual\"])\n",
"prediction = pd.DataFrame(predict,columns=[\"prediction\"])"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"result = pd.concat([actual, prediction],axis =1)\n",
"result['investing'] = '-'"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"from tqdm import tqdm"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
" 0%| | 0/190 [00:00<?, ?it/s]/Users/yangyoonji/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:6: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
" \n",
" 1%| | 2/190 [00:00<00:13, 13.78it/s]/Users/yangyoonji/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:8: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
" \n",
"100%|██████████| 190/190 [00:12<00:00, 15.51it/s]\n"
]
}
],
"source": [
"for i in tqdm(range(1,len(result))):\n",
" \n",
" real = result['actual'][i]-result['actual'][i-1]\n",
" pred = result['prediction'][i]-result['actual'][i-1]\n",
" if real * pred <= 0:\n",
" result['investing'][i] = 'fail'\n",
" else:\n",
" result['investing'][i] = 'success'"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>actual</th>\n",
" <th>prediction</th>\n",
" <th>investing</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.691248</td>\n",
" <td>0.690265</td>\n",
" <td>-</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.736622</td>\n",
" <td>0.641158</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.747421</td>\n",
" <td>0.715432</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.816973</td>\n",
" <td>0.735599</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.797308</td>\n",
" <td>0.778129</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>0.781431</td>\n",
" <td>0.770791</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0.805932</td>\n",
" <td>0.739125</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>0.824146</td>\n",
" <td>0.796034</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>0.819230</td>\n",
" <td>0.785213</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>0.835993</td>\n",
" <td>0.811944</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>0.833978</td>\n",
" <td>0.794492</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>0.793520</td>\n",
" <td>0.810953</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>0.798275</td>\n",
" <td>0.768841</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>0.784736</td>\n",
" <td>0.773485</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>0.750645</td>\n",
" <td>0.774262</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>0.658769</td>\n",
" <td>0.718268</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>0.684720</td>\n",
" <td>0.639693</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>0.650064</td>\n",
" <td>0.652056</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>0.627095</td>\n",
" <td>0.624257</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>0.553997</td>\n",
" <td>0.620339</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>0.572937</td>\n",
" <td>0.539277</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>0.582527</td>\n",
" <td>0.550774</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>0.635477</td>\n",
" <td>0.599056</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>0.661670</td>\n",
" <td>0.580054</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>0.611057</td>\n",
" <td>0.645882</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>0.514426</td>\n",
" <td>0.585958</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>0.526999</td>\n",
" <td>0.491288</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>0.465264</td>\n",
" <td>0.500150</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>0.389587</td>\n",
" <td>0.476872</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>0.333414</td>\n",
" <td>0.382408</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>161</th>\n",
" <td>0.882818</td>\n",
" <td>0.937508</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>162</th>\n",
" <td>0.889426</td>\n",
" <td>0.871499</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>163</th>\n",
" <td>0.831721</td>\n",
" <td>0.867197</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>164</th>\n",
" <td>0.840506</td>\n",
" <td>0.829921</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>165</th>\n",
" <td>0.868391</td>\n",
" <td>0.838647</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>166</th>\n",
" <td>0.887814</td>\n",
" <td>0.860306</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>167</th>\n",
" <td>0.920616</td>\n",
" <td>0.885473</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>168</th>\n",
" <td>0.928191</td>\n",
" <td>0.890973</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>169</th>\n",
" <td>0.951564</td>\n",
" <td>0.922606</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>170</th>\n",
" <td>0.952531</td>\n",
" <td>0.905984</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>171</th>\n",
" <td>0.966070</td>\n",
" <td>0.958856</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>172</th>\n",
" <td>0.969536</td>\n",
" <td>0.937659</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>173</th>\n",
" <td>0.945277</td>\n",
" <td>0.955349</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>174</th>\n",
" <td>0.923920</td>\n",
" <td>0.930931</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>175</th>\n",
" <td>0.907076</td>\n",
" <td>0.901971</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>176</th>\n",
" <td>0.913201</td>\n",
" <td>0.899047</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>177</th>\n",
" <td>0.930287</td>\n",
" <td>0.906905</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>178</th>\n",
" <td>0.938749</td>\n",
" <td>0.890550</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>179</th>\n",
" <td>0.922711</td>\n",
" <td>0.931942</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>180</th>\n",
" <td>0.930932</td>\n",
" <td>0.885219</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>181</th>\n",
" <td>0.920777</td>\n",
" <td>0.919069</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>182</th>\n",
" <td>0.906834</td>\n",
" <td>0.914604</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>183</th>\n",
" <td>0.917876</td>\n",
" <td>0.882138</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>184</th>\n",
" <td>0.891844</td>\n",
" <td>0.892312</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>185</th>\n",
" <td>0.824629</td>\n",
" <td>0.857188</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>186</th>\n",
" <td>0.859687</td>\n",
" <td>0.834307</td>\n",
" <td>success</td>\n",
" </tr>\n",
" <tr>\n",
" <th>187</th>\n",
" <td>0.909010</td>\n",
" <td>0.827400</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>188</th>\n",
" <td>0.923195</td>\n",
" <td>0.899352</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>189</th>\n",
" <td>0.985090</td>\n",
" <td>0.906775</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>190</th>\n",
" <td>0.989845</td>\n",
" <td>0.945273</td>\n",
" <td>fail</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>191 rows × 3 columns</p>\n",
"</div>"
],
"text/plain": [
" actual prediction investing\n",
"0 0.691248 0.690265 -\n",
"1 0.736622 0.641158 fail\n",
"2 0.747421 0.715432 fail\n",
"3 0.816973 0.735599 fail\n",
"4 0.797308 0.778129 success\n",
"5 0.781431 0.770791 success\n",
"6 0.805932 0.739125 fail\n",
"7 0.824146 0.796034 fail\n",
"8 0.819230 0.785213 success\n",
"9 0.835993 0.811944 fail\n",
"10 0.833978 0.794492 success\n",
"11 0.793520 0.810953 success\n",
"12 0.798275 0.768841 fail\n",
"13 0.784736 0.773485 success\n",
"14 0.750645 0.774262 success\n",
"15 0.658769 0.718268 success\n",
"16 0.684720 0.639693 fail\n",
"17 0.650064 0.652056 success\n",
"18 0.627095 0.624257 success\n",
"19 0.553997 0.620339 success\n",
"20 0.572937 0.539277 fail\n",
"21 0.582527 0.550774 fail\n",
"22 0.635477 0.599056 success\n",
"23 0.661670 0.580054 fail\n",
"24 0.611057 0.645882 success\n",
"25 0.514426 0.585958 success\n",
"26 0.526999 0.491288 fail\n",
"27 0.465264 0.500150 success\n",
"28 0.389587 0.476872 fail\n",
"29 0.333414 0.382408 success\n",
".. ... ... ...\n",
"161 0.882818 0.937508 success\n",
"162 0.889426 0.871499 fail\n",
"163 0.831721 0.867197 success\n",
"164 0.840506 0.829921 fail\n",
"165 0.868391 0.838647 fail\n",
"166 0.887814 0.860306 fail\n",
"167 0.920616 0.885473 fail\n",
"168 0.928191 0.890973 fail\n",
"169 0.951564 0.922606 fail\n",
"170 0.952531 0.905984 fail\n",
"171 0.966070 0.958856 success\n",
"172 0.969536 0.937659 fail\n",
"173 0.945277 0.955349 success\n",
"174 0.923920 0.930931 success\n",
"175 0.907076 0.901971 success\n",
"176 0.913201 0.899047 fail\n",
"177 0.930287 0.906905 fail\n",
"178 0.938749 0.890550 fail\n",
"179 0.922711 0.931942 success\n",
"180 0.930932 0.885219 fail\n",
"181 0.920777 0.919069 success\n",
"182 0.906834 0.914604 success\n",
"183 0.917876 0.882138 fail\n",
"184 0.891844 0.892312 success\n",
"185 0.824629 0.857188 success\n",
"186 0.859687 0.834307 success\n",
"187 0.909010 0.827400 fail\n",
"188 0.923195 0.899352 fail\n",
"189 0.985090 0.906775 fail\n",
"190 0.989845 0.945273 fail\n",
"\n",
"[191 rows x 3 columns]"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"result"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"fail 109\n",
"success 81\n",
"- 1\n",
"Name: investing, dtype: int64"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"result['investing'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.5736842105263158"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"109/190"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}