python价格趋势软件,Python:在一组数字中找到趋势

python价格趋势软件,Python:在一组数字中找到趋势

I have a list of numbers in Python, like this:

x = [12, 34, 29, 38, 34, 51, 29, 34, 47, 34, 55, 94, 68, 81]

What’s the best way to find the trend in these numbersI’m not interested in predicting what the next number will be, I just want to output the trend for many sets of numbers so that I can compare the trends.

Edit: By trend, I mean that I’d like a numerical representation of whether the numbers are increasing or decreasing and at what rate. I’m not massively mathematical, so there’s probably a proper name for this!

Edit 2: It looks like what I really want is the co-efficient of the linear best fit. What’s the best way to get this in Python/p>

解决方案

Possibly you mean you want to plot these numbers on a graph and find a straight line through them where the overall distance between the line and the numbers is minimizedThis is called a linear regression

def linreg(X, Y):

“””

return a,b in solution to y = ax + b such that root mean square distance between trend line and original points is minimized

“””

N = len(X)

Sx = Sy = Sxx = Syy = Sxy = 0.0

for x, y in zip(X, Y):

Sx = Sx + x

Sy = Sy + y

Sxx = Sxx + x*x

Syy = Syy + y*y

Sxy = Sxy + x*y

det = Sxx * N – Sx * Sx

return (Sxy * N – Sy * Sx)/det, (Sxx * Sy – Sx * Sxy)/det

x = [12, 34, 29, 38, 34, 51, 29, 34, 47, 34, 55, 94, 68, 81]

a,b = linreg(range(len(x)),x) //your x,y are switched from standard notation

The trend line is unlikely to pass through your original points, but it will be as close as possible to the original points that a straight line can get. Using the gradient and intercept values of this trend line (a,b) you will be able to extrapolate the line past the end of the array:

extrapolatedtrendline=[a*index + b for index in range(20)] //replace 20 with desired trend length

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览209014 人正在系统学习中 相关资源:ExWinner成套报价软件

来源:猪猪笨笨的鸭

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年11月7日
下一篇 2020年11月7日

相关推荐