首页 > 编程知识 正文

做预测用什么算法,小样本数据预测模型

时间:2023-05-05 13:25:57 阅读:148238 作者:791

预测模型

1、灰色预测

适用范围:基于小样本数据预测的模型。 灰色系统理论主要针对时间序列少、统计数据少、信息不完整的分析与建模。

灰色系统:信息不完全确定的系统为黑色系统,信息完全确定的系统为白色系统,既有已知信息又有未知信息的系统为灰色系统

灰色系统是对离散序列建立的微分方程,通过整理原始数据求出其变化规律,即灰色序列的生产。

灰色生成:累计生成、累计减法生成、平均生成、电平比生成

1数据检查

计算数列的等级比,如果所有等级比都在可复盖区间(e-2/n 1,e2/n 1 )内,则可以建立GM (1,1 )模型

2模型的构建

生成x1的邻接值生成序列z1,定义模型如下。

d(k ) az1 ) k )=b

(a是发展系数,z1(k )是白化背景值,b是灰作用量)

1.1预测检验

残差检查:

s(k )=x0(k )-x^0(k )=x0(k ) ) ) ) ) ) ) ) )。

所有|s(k )|0.1都被认为满足了较高的要求。

|s(k )|0.2被认为满足一般要求

等级比偏差值检查:

p(k )=1-(1-0.5a )1.5a ) s ) k )/s ^ (k ) ) ) ) ) ) ) ) p ) ) ) ) ) p ) s ) s ) s ) k ) k )

|p(k )|0.1被认为满足较高的要求

|p(k )|0.2被认为满足一般要求

2、马尔可夫链

状态空间从一个状态向另一个状态转变的随机过程。 必须满足以下两个条件。

1任意时刻可以用有限的可能状态之一来描述

2无效

状态向量: x=(x1,x2,x3,…xk ) )。

各元素分别表示第几次观测时第I个状态的概率

系统的可能状态为k个

p转移概率矩阵

x(n1 )=x )0) p ) n ) )。

3、线性回归

线性回归适于在自变量和一个或多个自变量之间建立作为截距的关系a、作为斜率的b,测量自变量和自变量之间的关联度,数据较多,计算简单。

其表现形式为y=w’xe .其中,e为误差服从平均值为0的正态分布

最小二乘法:用残差平方和的最小确定直线的位置

调用python的sklearn实现了线性回归算法,可以训练模型,求解截尾和斜率

//灰色预测importnumpyasnpimportpandasaspdefratio (x0 ) :n=len ) x0 ) ratio=[x0[I]/x0[I1] forIinrange(n-1 ) ) ) ) ) )灰色预测min_r=min(Ratio ) max_r=max ) Ratio ) r=[NP.exp(-2/) n2 ) 满足以下条件: NP.exp(2/) n2 ) ] print(r ) r ) ifmin_r=r )0) andmax_r=r )1) : )等级比累积阵列z=(x1 ) x1 )-1 ) x1 ) 1: ) )/2z1=z axis=1) y=x0(1: ).reshape (n-1,1 ) u=NP.dot (NP.) y ) x12=NP.Zeros(n ) x02=np.zeros(n ) n ) x12 )0) x02 )0) forIinrange ) 1,n ) 3360x12 ) I )=) x0 ) forinrinros ) n ) x0n 65: x 02 [ I ]=x12 [ I ]-x12 [ I-1 ]打印(f (f (f (原始值(x0 ) ) ) (打印) f (预测值) x02 ) )返回x02 udef u ) :n=Len(x0 ) deltas=[] for i in range(n ) n ) :EPS=x0[I]-x02[I]Delta=ABS ) EPS/x0[I] forIinrange ) n-1 ) :rho=1-((1-0.5*u )0)/u(1) )/1.0.5 print(f )电平比偏差: {rhos} ) (if _ name 72.1 u=predict(x0 ) accuracy (x0,x02,ratio,u ) /马尔可夫链importnumpyasnpimportrandomasrmdefmarkov ) : start=NP.NP 0.545 rest MP=startforiinrange (15 ) : RES=NP.dot rest MP, trans(print(RES ) restmp=resmarkov )//线性回归importpandasaspdimportnumpyasnpfromsklearn.linear _ modelimportlinearregressionmodel=linear regression (data={ '学习时间1 '成绩' : [ 10,20,13,43,20,22,33,50,62 ] df=PD.data frame (data ) x=df[“学习时间”) y=df )“成绩” print(f '切片: {a} ) b=Model.coef_[0][0]print(f ) f '倾斜:{b} )

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。