slaypni / fastdtw

A Python implementation of FastDTW
MIT License
774 stars 122 forks source link

Tuple out of index error #47

Open dcyfung opened 3 years ago

dcyfung commented 3 years ago

I got a time-series dataset containing 27 columns X 782 rows. I found that once the dataset exceeded 20000 float-point data. fastdtw will throw IndexError: tuple index out of range. Is there a way to fix this because I need to cluster at least 50 columns X 782 rows. David Fung Environment: Windows 10 Home, Python 3.8.3, IPython 7.16.1

The following is the dump generated by the Spyder IDE: runfile('C:/Users/dfoo1/anaconda3/AIOPython/SP500MK02M02_test.py', wdir='C:/Users/dfoo1/anaconda3/AIOPython') Scaling...

Applying Trend Clustering...

Dataset dimensions: 21087 15176786 function calls (15176752 primitive calls) in 4.859 seconds

Ordered by: standard name

ncalls tottime percall cumtime percall filename:lineno(function) 5 0.000 0.000 0.000 0.000 :1017(_handle_fromlist) 1 0.000 0.000 4.859 4.859 :1() 2 0.000 0.000 4.836 2.418 SP500MK02M02_test.py:144(fastdtw_distance) 1 0.000 0.000 4.859 4.859 SP500MK02M02_test.py:57(fit) 1 0.022 0.022 0.022 0.022 SP500MK02M02_test.py:77() 1 0.000 0.000 4.836 4.836 SP500MK02M02_test.py:81() 2 0.000 0.000 4.836 2.418 SP500MK02M02_test.py:82() 8/4 0.000 0.000 0.000 0.000 _asarray.py:16(asarray) 8 0.000 0.000 0.000 0.000 _asarray.py:88(asanyarray) 3 0.000 0.000 0.000 0.000 _dtype.py:319(_name_includes_bit_suffix) 3 0.000 0.000 0.000 0.000 _dtype.py:333(_name_get) 3 0.000 0.000 0.000 0.000 _dtype.py:36(_kind_name) 6 0.000 0.000 0.000 0.000 _internal.py:830(npy_ctypes_check) 4 0.000 0.000 0.000 0.000 _ufunc_config.py:139(geterr) 4 0.000 0.000 0.000 0.000 _ufunc_config.py:39(seterr) 2 0.000 0.000 0.000 0.000 _ufunc_config.py:437(init) 2 0.000 0.000 0.000 0.000 _ufunc_config.py:441(enter) 2 0.000 0.000 0.000 0.000 _ufunc_config.py:446(exit) 17 0.000 0.000 0.000 0.000 abc.py:96(instancecheck) 1 0.000 0.000 0.000 0.000 base.py:1026(iter) 1 0.000 0.000 0.000 0.000 base.py:1186(name) 14 0.000 0.000 0.000 0.000 base.py:247(is_dtype) 2 0.000 0.000 0.000 0.000 base.py:5294(ensure_index) 1 0.000 0.000 0.000 0.000 base.py:5388(default_index) 5 0.000 0.000 0.000 0.000 base.py:5394(maybe_extract_name) 1 0.000 0.000 0.000 0.000 base.py:592(_reset_identity) 3 0.000 0.000 0.000 0.000 blocks.py:118(init) 3 0.000 0.000 0.000 0.000 blocks.py:129(_check_ndim) 2 0.000 0.000 0.000 0.000 blocks.py:187(is_categorical_astype) 2 0.000 0.000 0.000 0.000 blocks.py:202(external_values) 3 0.000 0.000 0.000 0.000 blocks.py:213(internal_values) 4 0.000 0.000 0.000 0.000 blocks.py:219(array_values) 2 0.000 0.000 0.000 0.000 blocks.py:225(get_values) 5 0.000 0.000 0.000 0.000 blocks.py:247(mgr_locs) 3 0.000 0.000 0.000 0.000 blocks.py:251(mgr_locs) 2 0.000 0.000 0.000 0.000 blocks.py:2597(init) 3 0.000 0.000 0.000 0.000 blocks.py:2987(get_block_type) 3 0.000 0.000 0.000 0.000 blocks.py:3033(make_block) 2 0.000 0.000 0.000 0.000 blocks.py:3059(_extend_blocks) 2 0.000 0.000 0.000 0.000 blocks.py:335(shape) 5 0.000 0.000 0.000 0.000 blocks.py:339(dtype) 2 0.000 0.000 0.000 0.000 blocks.py:554(astype) 1 0.000 0.000 0.000 0.000 cast.py:1088(maybe_castable) 1 0.000 0.000 0.000 0.000 cast.py:1102(maybe_infer_to_datetimelike) 1 0.000 0.000 0.000 0.000 cast.py:1209(maybe_cast_to_datetime) 1 0.000 0.000 0.000 0.000 cast.py:1483(construct_1d_ndarray_preserving_na) 2 0.000 0.000 0.000 0.000 cast.py:799(astype_nansafe) 14 0.000 0.000 0.000 0.000 common.py:1565(is_extension_array_dtype) 4 0.000 0.000 0.000 0.000 common.py:1672(_get_dtype) 16 0.000 0.000 0.000 0.000 common.py:1708(_is_dtype_type) 2 0.000 0.000 0.000 0.000 common.py:179(ensure_python_int) 1 0.000 0.000 0.000 0.000 common.py:183(all_none) 9 0.000 0.000 0.000 0.000 common.py:1844(pandas_dtype) 2 0.000 0.000 0.000 0.000 common.py:187() 15 0.000 0.000 0.000 0.000 common.py:206(classes) 15 0.000 0.000 0.000 0.000 common.py:208() 1 0.000 0.000 0.000 0.000 common.py:211(classes_and_not_datetimelike) 1 0.000 0.000 0.000 0.000 common.py:216() 7 0.000 0.000 0.000 0.000 common.py:222(is_object_dtype) 3 0.000 0.000 0.000 0.000 common.py:252(is_sparse) 1 0.000 0.000 0.000 0.000 common.py:275(maybe_iterable_to_list) 3 0.000 0.000 0.000 0.000 common.py:339(is_categorical) 4 0.000 0.000 0.000 0.000 common.py:372(is_datetime64_dtype) 3 0.000 0.000 0.000 0.000 common.py:403(is_datetime64tz_dtype) 4 0.000 0.000 0.000 0.000 common.py:441(is_timedelta64_dtype) 3 0.000 0.000 0.000 0.000 common.py:472(is_period_dtype) 3 0.000 0.000 0.000 0.000 common.py:506(is_interval_dtype) 5 0.000 0.000 0.000 0.000 common.py:542(is_categorical_dtype) 2 0.000 0.000 0.000 0.000 common.py:685(is_dtype_equal) 1 0.000 0.000 0.000 0.000 common.py:775(is_integer_dtype) 1 0.000 0.000 0.000 0.000 construction.py:337(extract_array) 1 0.000 0.000 0.000 0.000 construction.py:388(sanitize_array) 1 0.000 0.000 0.000 0.000 construction.py:506(_try_cast) 3 0.000 0.000 0.000 0.000 construction.py:570(is_empty_data) 3 0.000 0.000 0.000 0.000 dtypes.py:1124(is_dtype) 16 0.000 0.000 0.000 0.000 dtypes.py:75(find) 3 0.000 0.000 0.000 0.000 dtypes.py:917(is_dtype) 12 0.780 0.065 1.599 0.133 fastdtw.py:133(dtw) 2 0.000 0.000 0.000 0.000 fastdtw.py:136() 502384 0.093 0.000 0.093 0.000 fastdtw.py:137() 6140 0.002 0.000 0.002 0.000 fastdtw.py:138() 1507116 0.117 0.000 0.117 0.000 fastdtw.py:143() 2 0.004 0.002 4.836 2.418 fastdtw.py:15(fastdtw) 20 0.000 0.000 0.002 0.000 fastdtw.py:153(reduce_by_half) 20 0.002 0.000 0.002 0.000 fastdtw.py:154() 10 1.660 0.166 3.097 0.310 fastdtw.py:157(expand_window) 5219612 0.755 0.000 0.755 0.000 fastdtw.py:160() 12/2 0.134 0.011 4.832 2.416 fastdtw.py:64(fastdtw) 4 0.000 0.000 0.000 0.000 fastdtw.py:78(prep_inputs) 2 0.000 0.000 0.004 0.002 fastdtw.py:98(dtw) 66 0.000 0.000 0.000 0.000 generic.py:10(_check) 3 0.000 0.000 0.000 0.000 generic.py:190(init) 2 0.000 0.000 0.000 0.000 generic.py:238(attrs) 2 0.000 0.000 0.000 0.000 generic.py:5235(finalize) 11 0.000 0.000 0.000 0.000 generic.py:5257(getattr) 3 0.000 0.000 0.000 0.000 generic.py:5276(setattr) 2 0.000 0.000 0.000 0.000 generic.py:5563(astype) 5 0.000 0.000 0.000 0.000 inference.py:299(is_dict_like) 11 0.000 0.000 0.000 0.000 inference.py:325() 12 0.000 0.000 0.000 0.000 inference.py:358(is_hashable) 2 0.000 0.000 0.000 0.000 inspect.py:72(isclass) 3 0.000 0.000 0.000 0.000 managers.py:1467(init) 12 0.000 0.000 0.000 0.000 managers.py:1520(_block) 2 0.000 0.000 0.000 0.000 managers.py:1544(index) 3 0.000 0.000 0.000 0.000 managers.py:1548(dtype) 2 0.000 0.000 0.000 0.000 managers.py:1562(external_values) 3 0.000 0.000 0.000 0.000 managers.py:1565(internal_values) 2 0.000 0.000 0.000 0.000 managers.py:1582(_consolidate_inplace) 3 0.000 0.000 0.000 0.000 managers.py:232(items) 3 0.000 0.000 0.000 0.000 managers.py:314(len) 2 0.000 0.000 0.000 0.000 managers.py:368(apply) 2 0.000 0.000 0.000 0.000 managers.py:419() 2 0.000 0.000 0.000 0.000 managers.py:581(astype) 3 0.000 0.000 0.000 0.000 numeric.py:155(is_all_dates) 1 0.000 0.000 0.000 0.000 numeric.py:83(_validatedtype) 10 0.000 0.000 0.000 0.000 numerictypes.py:293(issubclass) 5 0.000 0.000 0.000 0.000 numerictypes.py:365(issubdtype) 4 0.000 0.000 0.000 0.000 numpy.py:138(init) 4 0.000 0.000 0.000 0.000 numpy.py:183(array) 4 0.000 0.000 0.000 0.000 numpy_.py:42(init) 1 0.000 0.000 0.000 0.000 range.py:131(_simple_new) 5 0.000 0.000 0.000 0.000 range.py:675(len) 1 0.000 0.000 0.000 0.000 range.py:83(new) 3 0.000 0.000 0.000 0.000 series.py:183(init) 2 0.000 0.000 0.000 0.000 series.py:359(_constructor) 2/1 0.000 0.000 4.836 4.836 series.py:3719(apply) 3 0.000 0.000 0.000 0.000 series.py:376(_set_axis) 3 0.000 0.000 0.000 0.000 series.py:403(_set_subtyp) 3 0.000 0.000 0.000 0.000 series.py:414(dtype) 5 0.000 0.000 0.000 0.000 series.py:428(name) 5 0.000 0.000 0.000 0.000 series.py:432(name) 2 0.000 0.000 0.000 0.000 series.py:438(values) 3 0.000 0.000 0.000 0.000 series.py:480(_values) 4 0.000 0.000 0.000 0.000 series.py:515(array) 3 0.000 0.000 0.000 0.000 series.py:548(len) 4 0.000 0.000 0.000 0.000 series.py:707(array) 502372 0.206 0.000 0.247 0.000 utils.py:25(abs_distance) 1 0.000 0.000 0.000 0.000 {built-in method new__ of type object at 0x00007FF9F575C810} 17 0.000 0.000 0.000 0.000 {built-in method _abc._abc_instancecheck} 502372 0.041 0.000 0.041 0.000 {built-in method builtins.abs} 6 0.000 0.000 0.000 0.000 {built-in method builtins.all} 2 0.000 0.000 0.000 0.000 {built-in method builtins.callable} 1 0.000 0.000 4.859 4.859 {built-in method builtins.exec} 102 0.000 0.000 0.000 0.000 {built-in method builtins.getattr} 19 0.000 0.000 0.000 0.000 {built-in method builtins.hasattr} 12 0.000 0.000 0.000 0.000 {built-in method builtins.hash} 218 0.000 0.000 0.000 0.000 {built-in method builtins.isinstance} 75 0.000 0.000 0.000 0.000 {built-in method builtins.issubclass} 138/128 0.000 0.000 0.000 0.000 {built-in method builtins.len} 502372 0.359 0.000 0.475 0.000 {built-in method builtins.min} 1 0.000 0.000 0.000 0.000 {built-in method numpy.arange} 18/10 0.000 0.000 0.000 0.000 {built-in method numpy.array} 8 0.000 0.000 0.000 0.000 {built-in method numpy.geterrobj} 4 0.000 0.000 0.000 0.000 {built-in method numpy.seterrobj} 5928830 0.653 0.000 0.653 0.000 {method 'add' of 'set' objects} 504311 0.030 0.000 0.030 0.000 {method 'append' of 'list' objects} 4 0.000 0.000 0.000 0.000 {method 'astype' of 'numpy.ndarray' objects} 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} 1 0.000 0.000 0.000 0.000 {method 'format' of 'str' objects} 2 0.000 0.000 0.000 0.000 {method 'pop' of 'dict' objects} 2 0.000 0.000 0.000 0.000 {method 'ravel' of 'numpy.ndarray' objects} 2 0.000 0.000 0.000 0.000 {method 'reshape' of 'numpy.ndarray' objects} 11 0.000 0.000 0.000 0.000 {method 'reverse' of 'list' objects} 7 0.000 0.000 0.000 0.000 {pandas._libs.lib.is_list_like} 2 0.000 0.000 0.000 0.000 {pandas._libs.lib.is_scalar} 2/1 0.000 0.000 4.836 4.836 {pandas._libs.lib.map_infer}

Traceback (most recent call last):

File "C:\Users\dfoo1\anaconda3\AIOPython\SP500MK02M02_test.py", line 219, in cProfile.run('trendy.fit(stockPriceList)')

File "C:\Users\dfoo1\anaconda3\lib\cProfile.py", line 16, in run return _pyprofile._Utils(Profile).run(statement, filename, sort)

File "C:\Users\dfoo1\anaconda3\lib\profile.py", line 53, in run prof.run(statement)

File "C:\Users\dfoo1\anaconda3\lib\cProfile.py", line 95, in run return self.runctx(cmd, dict, dict)

File "C:\Users\dfoo1\anaconda3\lib\cProfile.py", line 100, in runctx exec(cmd, globals, locals)

File "", line 1, in

File "C:\Users\dfoo1\anaconda3\AIOPython\SP500MK02M02_test.py", line 80, in fit X_idx.apply(

File "C:\Users\dfoo1\anaconda3\lib\site-packages\pandas\core\series.py", line 3848, in apply mapped = lib.map_infer(values, f, convert=convert_dtype)

File "pandas_libs\lib.pyx", line 2329, in pandas._libs.lib.map_infer

File "C:\Users\dfoo1\anaconda3\AIOPython\SP500MK02M02_test.py", line 81, in lambda x: X_idx.apply(

File "C:\Users\dfoo1\anaconda3\lib\site-packages\pandas\core\series.py", line 3848, in apply mapped = lib.map_infer(values, f, convert=convert_dtype)

File "pandas_libs\lib.pyx", line 2329, in pandas._libs.lib.map_infer

File "C:\Users\dfoo1\anaconda3\AIOPython\SP500MK02M02_test.py", line 82, in lambda y: self.fastdtw_distance(X[x], X[y]))))

File "C:\Users\dfoo1\anaconda3\AIOPython\SP500MK02M02_test.py", line 166, in fastdtw_distance return fastdtw(x, y, radius, dist=d)[0]

File "C:\Users\dfoo1\anaconda3\lib\site-packages\fastdtw\fastdtw.py", line 53, in fastdtw return __fastdtw(x, y, radius, dist)

File "C:\Users\dfoo1\anaconda3\lib\site-packages\fastdtw\fastdtw.py", line 75, in fastdtw return dtw(x, y, window, dist=dist)

File "C:\Users\dfoo1\anaconda3\lib\site-packages\fastdtw\fastdtw.py", line 148, in __dtw i, j = D[i, j][1], D[i, j][2]

IndexError: tuple index out of range

i-camouflage commented 2 months ago

我也出现了这个问题,请问你解决了吗