英文:
Why is the behaviour of stumpy.stump changing so abruptly? Why is it unable to match constant intervals as the same shape?
问题
I want to find similar shapes in time series using stumpy. However there seems to be some kind of special treatment of values that I do not understand.
Let me give you an example:
import numpy as np
import matplotlib.pyplot as plt
import stumpy
ssss = 105 * np.ones(800)
ssss[:50] = 100
m = 210
mp = stumpy.stump(ssss, m=m)
plt.plot(ssss, color="blue")
plt.plot(mp[:, 0], color="orange")
Results in
But clearly there are many parts where there is a perfect match after the jump, so the orange line, the distance, should be 0. Why is that not the case?
Surprisingly, if you change the 100 to 101 you get the result you would expect:
import numpy as np
import matplotlib.pyplot as plt
import stumpy
ssss = 105 * np.ones(800)
ssss[:50] = 101
m = 210
mp = stumpy.stump(ssss, m=m)
plt.plot(ssss, color="blue")
plt.plot(mp[:, 0], color="orange")
What is an explanation for that?
英文:
I want to find similar shapes in time series using stumpy. However there seems to be some kind of special treatment of values that I do not understand.
Let me give you an example:
import numpy as np
import matplotlib.pyplot as plt
import stumpy
ssss=105*np.ones(800)
ssss[:50]=100
m = 210
mp = stumpy.stump(ssss, m=m)
plt.plot(ssss, color="blue")
plt.plot(mp[:,0], color="orange")
Results in
But clearly there are many parts where there is a perfect match after the jump, so the orange line, the distance, should be 0. Why is that not the case?
Surprisingly, if you change the 100 to 101 you get the result you would expect:
import numpy as np
import matplotlib.pyplot as plt
import stumpy
ssss=105*np.ones(800)
ssss[:50]=101
m = 210
mp = stumpy.stump(ssss, m=m)
plt.plot(ssss, color="blue")
plt.plot(mp[:,0], color="orange")
What is an explanation for that?
答案1
得分: 2
I tried your first code using the latest development version.
import numpy as np
import matplotlib.pyplot as plt
import stumpy
T = 105 * np.ones(800)
T[:50] = 100
m = 210
mp = stumpy.stump(T, m=m)
plt.plot(T, color="blue")
plt.plot(mp[:,0], color="orange")
plt.show()
and I get this:
which makes sense I think. So, I suggest that you start fresh and install stumpy again and check the result.
Regarding your second question:
If I change 100
to 101
, I get the same figure as above [which makes sense I believe when the param normalize
is set to True (default)]
英文:
I tried your first code using the latest development version.
import numpy as np
import matplotlib.pyplot as plt
import stumpy
T = 105 * np.ones(800)
T[:50] = 100
m = 210
mp = stumpy.stump(T, m=m)
plt.plot(T, color="blue")
plt.plot(mp[:,0], color="orange")
plt.show()
and I get this:
which makes sense I think. So, I suggest that you start fresh and install stumpy again and check the result.
Regarding your second question:
If I change 100
to 101
, I get the same figure as above [which makes sense I believe when the param normalize
is set to True (default)]
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论