numpy.diff
- A [N]
https://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.diff.html
import numpy as np
data = [1, 2, 4, 5, 8, 7, 6, 4, 1]
data = np.array(data, dtype=float)
velocity = np.diff(data)
acceleration = np.diff(velocity)
jerk = np.diff(acceleration)
jounce = np.diff(jerk)
print data
print velocity
print acceleration
print jerk
print jounce
>>>
[ 1. 2. 4. 5. 8. 7. 6. 4. 1.]
# positive numbers = rising
[ 1. 2. 1. 3. -1. -1. -2. -3.]
# positive numbers = concave up
[ 1. -1. 2. -4. 0. -1. -1.]
# positive numbers = curling up
[-2. 3. -6. 4. -1. 0.]
# positive numbers = snapping up
[ 5. -9. 10. -5. 1.]
https://en.wikipedia.org/wiki/Velocity
을
https://en.wikipedia.org/wiki/Acceleration
https://en.wikipedia.org/wiki/Jerk_(physics)
https://en.wikipedia.org/wiki/Jounce
내 경향 후 첫번째 유도체를 분할한다; 속도를 이동 평균으로 곱한 다음 100을 곱하여 % ROC로 변환합니다. 때로는 가속도 중요합니다. 움푹 들어간 곳 ...
print np.mean(data)
print np.mean(velocity)
print np.mean(acceleration)
이 샘플 세트, 모양에 대한 일반화를 만들기 위해 :
추가적인 당신은 바보/더 확률을 동요/소음 데이터는 각의 평균을 계산할 수 있습니다
될 수 다음
및
>>>
4.22222222222 # average value
0.0 # generally sideways; no trend
-0.571428571429 # concave mostly down
평균 상대 표준 편차
import numpy as np
data = [1, 2, 4, 5, 8, 7, 6, 4, 1]
coef_variance = np.std(data)/np.mean(data)
print coef_variance
>>>0.566859453383
하는 내가 좋겠 칼 l "상당히 휘발성이있다"; 극도의 규모는 아니지만 일반적으로> 1
https://en.wikipedia.org/wiki/Coefficient_of_variation
"높은 변종"으로 간주하고 우리가 플롯하면된다
:
import matplotlib.pyplot as plt
import numpy as np
data = [1, 2, 4, 5, 8, 7, 6, 4, 1]
x = range(9)
plt.plot(x,data,c='red',ms=2)
plt.show()
우리가 볼 수는 우리가 무엇을 발견의 일반적으로 좋은 설명입니다
전체적으로 업/다운 경향 없음, 상당히 휘발성, 오목 다운; 당신은 또한 polyfit 수 있습니다 단지
4 이상 의미 :
import matplotlib.pyplot as plt
import numpy as np
data = [1, 2, 4, 5, 8, 7, 6, 4, 1]
x = range(9)
plt.plot(x,data,c='red',ms=2)
poly = np.polyfit(x,data,2)
z = []
for x in range(9):
z.append(poly[0]*x*x + poly[1]*x + poly[2])
x = range(9)
plt.plot(x,z,c='blue',ms=2)
print poly
plt.show()
반환 : 즉
[-0.37445887 3.195671 -0.07272727]
:
-0.374x^2 + 3.195x - 0.072
하는 플롯 :
거기에서 당신은 당신의 모델이
Sum of Square Differences (SSD) in numpy/scipy
얼마나 정확하게 볼 제곱의 합을 계산할 수 있습니다 당신은 때까지 정도마다
np.polyfit(x,data,degree)
을 증가 polyfit 과정을 반복 할 수있다 당신은 당신의 필요를 위해 충분히 낮은 SSD를 얻습니다; 만약 당신의 데이터가 x^2ish, x^3ish, x^4ish 등일 경우 당신에게 말할 것입니다.
while ssd > your_desire:
poly_array = polyfit()
ssd = sum_squares(poly_array, data)
degree +=1
이것은 프로그래밍 문제보다 수학 문제와 비슷합니다. 그러나 나는 당신이 원하는 것 같아요. do는 다차원 다항식에 적합하고 모양을 결정하기 위해 파생물을 사용합니다 (2 차 미분은 오목면을 제공하고 임계점의 수는 "humps"등을 나타냄) –
아마 배열을 반복하고 (정확하게 또는 그렇지 않은) 일부를 검증 할 수 있습니다 수학 원리. 예 : 모든 i에 대해 v [i + 1] + v [i-1]> = v [i]'. –
거친 모양은 각 연속 용어의 차이점을 확인한 다음 그 차이점을 - 대략적으로 표시합니다 (여기에있는 키는 2 차 미분과 유사합니다.) 차이점의 첫 번째 세트조차도 기호 변경을 볼 수 있습니다 피크/골짜기가 표시됩니다. –