1. python怎么表示指数
其中有两个非常漂亮的指数函数图就是用python的matplotlib画出来的。这一期,我们将要介绍如何利用python绘制出如下指数函数。
图 1 a>1图 1 a>1
我们知道当0 ,指数函数 是单调递减的,当a>1 时,指数函数是单调递增的。所以我们首先要定义出指数函数,将a值做不同初始化
import math
...
def exponential_func(x, a): #定义指数函数
y=math.pow(a, x)
return y
然后,利用numpy构造出自变量,利用上面定义的指数函数来计算出因变量
X=np.linspace(-4, 4, 40) #构造自变量组
Y=[exponential_func(x) for x in X] #求函数值
有了自变量和因变量的一些散点,那么就可以模拟我们平时画函数操作——描点绘图,利用下面代码就可以实现
import math
import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.axisartist as axisartist #导入坐标轴加工模块
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
fig=plt.figure(figsize=(6,4)) #新建画布
ax=axisartist.Subplot(fig,111) #使用axisartist.Subplot方法创建一个绘图区对象ax
fig.add_axes(ax) #将绘图区对象添加到画布中
def exponential_func(x, a=2): #定义指数函数
y=math.pow(a, x)
return y
X=np.linspace(-4, 4, 40) #构造自变量组
Y=[exponential_func(x) for x in X] #求函数值
ax.plot(X, Y) #绘制指数函数
plt.show()
图 2 a=2
图2虽简单,但麻雀虽小五脏俱全,指数函数该有都有,接下来是如何让其看起来像我们在作图纸上面画的那么美观,这里重点介绍axisartist 坐标轴加工类,在的时候我们已经用过了,这里就不再多说了。我们只需要在上面代码后面加上一些代码来将坐标轴好好打扮一番。
图 3 a>1 完整代码# -*- coding: utf-8 -*-图 3 a>1 完整代码# -*- coding: utf-8 -*-"""Created on Sun Feb 16 10:19:23 2020project name:@author: 帅帅de三叔"""import mathimport numpy as npimport matplotlib.pyplot as pltimport mp
2. Python均值平滑后的数据索引不变
滑动平均法把前后时刻的一共2n+1个观测值做平均,得到当前时刻的滤波结果。
滑动平均法还有一个升级版本,也就是加权滑动平均法。实际场景中,每个观测值的重要程度不同,忽略每个观测值的置信度直接平均不能得到精确的结果,所以就需要给观测值加权。
滑动平均法使用的前提是,噪声的均值为0,真实值变化不大或线性变化的场景。如果真实值有较高频率的非线性突变的话,滑动平均法的效果就不够好了。同时,滑动平均法的窗口选取很重要,需要根据具体数据来选择。
3. python中如何使用指数
exp()方法:
exp(x)方法返回x的指数,e^x。
如x=1,那么e的1次幂为2.7183…
语法:
注意:exp()是不能直接访问的,需要导入math模块,通过静态对象调用该方法。
实例:
运行结果:
python学习网,免费的在线学习python平台,欢迎关注!
4. 用Python怎么预测折线图的未来趋势
单靠折线图的话恐怕是不行的,但你可以从折线图上选点,用指数平滑曲线或者多项式线性模型去拟合,得到曲线模型。或者,可以使用非参的方法,例如k近邻,logistic方法去预测点的走势。
5. Python浅薄的基础小结上
Python 支持四种不同的数值类型:
整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点。
长整型(long integers) - 无限大小的整数,整数最后是一个大写或小写的L。
浮点型(floating point real values) - 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102= 250)
复数(complex numbers) - 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。
在Phton中常见的运算加、减、乘、除、求余、幂指数等,同现实生活中的遵循一样的优先级。即,乘除运算高于加减运算。例:
Python内置复数的计算支持所有常见复数的计算,对复数处理的数学函数在模块cmath中:
字符串或串(String)是由数字、字母、下划线组成的一串字符。Python字符串最大的特点是 不可修改, 只能生成新的字符串,用 双引号或单引号 都可以表示字符串,多行字符串用三个连续单引号表示,特殊字符用转义符 “\" 表示如: 制表符"\t",换行符"\n"
>>>str='Hello World!'
>>>print str*2 # 输出字符串两次
Hello World!Hello World!
>>>print str+"TEST" # 输出连接的字符串
Hello World!TEST
>>>len('str') #输出字符串的长度
12
python的 字串行表 有2种取值顺序:
从左到右索引默认0开始的,最大范围是字符串长度少1
从右到左索引默认-1开始的,最大范围是字符串开头
如果你要实现从字符串中获取一段子字符串的话,可以使用变量 [头下标:尾下标] ,就可以截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。比如:
s = 'ilovepython'
s[1:5] 的结果是 love。
当使用以冒号分隔的字符串,python返回一个新的对象,结果包含了以这对偏移标识的连续的内容,左边的开始是包含了下边界。
上面的结果包含了s[1]的值l,而取到的最大范围不包括上边界,就是s[5]的值p。
'abcd'[3:1:-1] #从右到左
'dc'
一些高级操作:
>>>s='You are my sunshine'
>>>s.split(' ')
['You' ,'are', 'my' ,'sunshine']
>>>t=['one','for','two']
>>>' '.join(t)
'one for two'
>>>t='Mike and Tom'
>>>t.replace('Tom','jane')
'Mike and jane'
python变量的概念和初中代数的方程变量一致,变量就像贴在东西上的标签,命名规则:大小写英文、数字和下划线,且不能用数字开头,变量可以反复赋值,而且可以是不同类型的变量
序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
Python有6个序列的内置类型,但最常见的是列表和元组。
序列都可以进行的操作包括索引,切片,加,乘,检查成员。
此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。
列表 是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
列表的数据项不需要具有相同的类型
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。
>>>[] #创建空的列表
[]
>>>list() #创建空的列表
[]
>>>alist=['physics','chemistry',1997,2000]
['physics','chemistry',1997,2000]
List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。
列表用[ ]标识,是 python 最通用的复合数据类型。
列表中值的切割也可以用到变量[头下标:尾下标],就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。
>>>list=['runoob', 786, 2.23, 'john', 70.2]
>>>tinylist=[123, 'john']
>>>print list # 输出完整列表
['runoob', 786, 2.23, 'john', 70.2]
>>>'runoob' in alist #某个元素是否存在
True
>>>print list[0] # 输出列表的第一个元素
runoob
>>>print list[1:3] # 输出第二个至第三个元素
[786,2.23]
>>>print list[2:] # 输出从第三个开始至列表末尾的所有元素
[2.23,'john',70.2]
>>>print tinylist*2 # 输出列表两次
[123,'john',123,'john']
>>>print list+tinylist # 打印组合的列表
['runoob',786,2.23,'john',70.2,123,'john']
Python的元组 与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号,列表使用方括号。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
>>>() #创建空的元组
()
>>>tuple() #创建空的元组
()
元组中只包含一个元素时,需要在元素后面添加逗号如:tup1=(50,);
>>>tup=(1,True,0.234,"holle")
同列表相似 元组 适用:
+ :链接两个元组
* :复制n次,生成新的元组
in :某个元素是否存在
[start:end:step] :切片
值得注意的是元组是不可以更新的( 不可变) 序列,但我们可以对元组进行连接组合生成新的元组如:
>>>tup1=(12,34.56)
>>>tup2=('abc','xyz')
>>>tup3= tup1+tup2
>>>print tup3
(12,34.56,'abc','xyz')
任意无符号的对象,以逗号隔开,默认为元组。
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值(key=>value)对用冒号( : )分割,每个对之间用逗号( , )分割,整个字典包括在花括号( {}) 中 ,格式如下所示:
d= {key1:value1,key2:value2}
键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
字典是可变类型,可以添加,删除,替换
6. 使用python实现ema(指数移动平均的计算)
a=2/13
Prices=[0.0]#pricesofeveryday
EMAs=[0.0]#emsofeveryday
defema(N,Price):
Prices.append(Price)
ifN<=1:
EMAs.append(Price)
else:
EMAs.append((1-a)*EMAs[N-1]+a*Price)
ema(1,1)
ema(2,3)
print(EMAs[1])
print(EMAs[2])
7. 如何使用Python绘制光滑实验数据曲线
楼主的问题是否是“怎样描绘出没有数据点的位置的曲线”,或者是“x在某个位置时,即使没有数据,我也想知道他的y值是多少,好绘制曲线”。这就是个预测未知数据的问题。
传统的方法就是回归,python的scipy可以做。流行一点的就是机器学习,python的scikit-learn可以做。
但问题在于,仅由光强能预测出开路电压吗(当然,有可能可以预测。)?就是你的图1和图2的曲线都不能说是不可能发生的情况吧,所以想预测开路电压值还需引入其他影响因子。这样你才能知道平滑曲线到底应该像图1还是图2还是其他样子。
如果是单因子的话,从散点图观察,有点像 y = Alnx + B,用线性回归模型确定A,B的值就可以通过x预测y的值,从而绘制平滑的曲线了。
8. 指数平滑方法简介
指数平滑(Exponential smoothing)是除了 ARIMA 之外的另一种被广泛使用的时间序列预测方法(关于 ARIMA,请参考 时间序列模型简介 )。 指数平滑即指数移动平均(exponential moving average),是以指数式递减加权的移动平均。各数值的权重随时间指数式递减,越近期的数据权重越高。常用的指数平滑方法有一次指数平滑、二次指数平滑和三次指数平滑。
一次指数平滑又叫简单指数平滑(simple exponential smoothing, SES),适合用来预测没有明显趋势和季节性的时间序列。其预测结果是一条水平的直线。模型形如:
其中 是真实值, 为预测值, 为平滑值, 。
定义残差 ,其中 ,则可以通过优化方法得到 和 。
使用 python 的 statsmodels 可以方便地应用该模型:
效果如图:
Holt 扩展了简单指数平滑,使其可以用来预测带有趋势的时间序列。直观地看,就是对平滑值的一阶差分(可以理解为斜率)也作一次平滑。模型的预测结果是一条斜率不为0的直线。模型形如:
其中 , 。
效果如图:
Holt's linear trend method 得到的预测结果是一条直线,即认为未来的趋势是固定的。对于短期有趋势、长期趋于稳定的序列,可以引入一个阻尼系数 ,将模型改写为
为了描述时间序列的季节性,Holt 和 Winters 进一步扩展了 Holt's linear trend method,得到了三次指数平滑模型,也就是通常说的 Holt-Winters’ 模型。我们用 表示“季节”的周期。根据季节部分和非季节部分的组合方式不同,Holt-Winters’ 又可以分为加法模型和乘法模型。
加法模型形如:
其中 , , 。 是 的整数部分。
效果如图:
乘法模型形如:
效果如图:
Holt-Winters’ 模型的趋势部分同样可以引入阻尼系数 ,这里不再赘述。
参数优化的方法是最小化误差平方和或最大化似然函数。模型选择可以根据信息量准则,常用的有 AIC 和 BIC等。
AIC 即 Akaike information criterion, 定义为
其中 是似然函数, 是参数数量。用 AIC 选择模型时要求似然函数大,同时对参数数量作了惩罚,在似然函数相近的情况下选择复杂度低的模型。
BIC 即 Bayesian information criterion,定义为
其中 是样本数量。当 时, ,因此当样本量较大时 BIC 对模型复杂度的惩罚比 AIC 更严厉。
线性的指数平滑方法可以看作是 ARIMA 的特例。例如简单指数平滑等价于 ARIMA(0, 1, 1),Holt's linear trend method 等价于 ARIMA(0, 2, 2),而 Damped trend methods 等价于 ARIMA(1, 1, 2) 等。
我们不妨来验证一下。
可以改写为
亦即
两边同时加上 ,得
而 ARIMA(p, d, q) 可以表示为
其中 是滞后算子(Lag operator), 。
考虑 ARIMA(0, 1, 1)
即
亦即
令 ,则两者等价。
非线性的指数平滑方法则没有对应的 ARIMA 表示。
[1] Hyndman, Rob J., and George Athanasopoulos. Forecasting: principles and practice. OTexts, 2014.
[2] Exponential smoothing - Wikipedia https://en.wikipedia.org/wiki/Exponential_smoothing
[3] Introction to ARIMA models - Duke https://people.ke.e/~rnau/411arim.htm
9. 求问python中 %的用法
%常见的两种用法:
1、数值运算 1 % 3 是指模运算,取余数(remainder)
>>> 7%2
1
2、字符串操作 'abc %s' % 'abc' '%s'类似占位符,这行代码的结果。
以下是类型码:
%s 字符串 (采用str()的显示)
%r 字符串 (采用repr()的显示)
%c 单个字符
%b 二进制整数
%d 十进制整数
%i 十进制整数
%o 八进制整数
%x 十六进制整数
%e 指数 (基底写为e)
%E 指数 (基底写为E)
%f 浮点数
%F 浮点数,与上相同%g 指数(e)或浮点数 (根据显示长度)
%G 指数(E)或浮点数 (根据显示长度)
%% 字符"%"
(9)python平滑指数扩展阅读
PYTHON 中的" %S"%用法:
一种字符串格式化的语法, 基本用法是将值插入到%s占位符的字符串中。
%s,表示格式化一个对象为字符
"%±(正负号表示)3(数字表示字符串的长度)s"%(取代s的字符串)
%s string型 表示格式化一个对象为字符 "%s1"%S2 s1放置的是一个字符串(格式化字符串) S2放置的是一个希望要格式化的值
string = "good" #类型为字符串
print("string=%s" %string) #输出的打印结果为 string=good
print("string=%3s" %string) # 输出的打印结果为 string=good(数字3的意思是:字符串的长度为3。当字符串的长度大于3时,按照字符串的长度打印出结果)
print("string=%(+)6s" %string) # 输出的打印结果为 string= good(当字符串的长度小于6时,在字符串的左侧填补空格,使得字符串的长度为6)
print("string=%-6s" %string) # 输出的打印结果为 string=good (当字符串的长度小于6时,在字符串的右侧填补空格,使得字符串的长度为6)
10. arima模型python 怎么看平稳性
时间序列分析(一) 如何判断序列是否平稳
序列平稳不平稳,一般采用两种方法:
第一种:看图法
图是指时序图,例如(eviews画滴):
分析:什么样的图不平稳,先说下什么是平稳,平稳就是围绕着一个常数上下波动。
看看上面这个图,很明显的增长趋势,不平稳。
第二种:自相关系数和偏相关系数
还以上面的序列为例:用eviews得到自相关和偏相关图,Q统计量和伴随概率。
分析:判断平稳与否的话,用自相关图和偏相关图就可以了。
平稳的序列的自相关图和偏相关图不是拖尾就是截尾。截尾就是在某阶之后,系数都为 0 ,怎么理解呢,看上面偏相关的图,当阶数为 1 的时候,系数值还是很大, 0.914. 二阶长的时候突然就变成了 0.050. 后面的值都很小,认为是趋于 0 ,这种状况就是截尾。再就是拖尾,拖尾就是有一个衰减的趋势,但是不都为 0 。
自相关图既不是拖尾也不是截尾。以上的图的自相关是一个三角对称的形式,这种趋势是单调趋势的典型图形。
下面是通过自相关的其他功能
如果自相关是拖尾,偏相关截尾,则用 AR 算法
如果自相关截尾,偏相关拖尾,则用 MA 算法
如果自相关和偏相关都是拖尾,则用 ARMA 算法, ARIMA 是 ARMA 算法的扩展版,用法类似 。
不平稳,怎么办?
答案是差分
还是上面那个序列,两种方法都证明他是不靠谱的,不平稳的。确定不平稳后,依次进行1阶、2阶、3阶...差分,直到平稳位置。先来个一阶差分,上图。
从图上看,一阶差分的效果不错,看着是平稳的。