GM(1,1)灰色模型-BP神经网络组合模型案例 稀有金属月度价格预测 数学建模竞赛题目+Python源代码_第1页
GM(1,1)灰色模型-BP神经网络组合模型案例 稀有金属月度价格预测 数学建模竞赛题目+Python源代码_第2页
GM(1,1)灰色模型-BP神经网络组合模型案例 稀有金属月度价格预测 数学建模竞赛题目+Python源代码_第3页
GM(1,1)灰色模型-BP神经网络组合模型案例 稀有金属月度价格预测 数学建模竞赛题目+Python源代码_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于GM(1,1)-BP模型的稀有金属月度价格预测问题背景:稀有金属(如稀土、钨、钼等)在新能源、高端制造等领域应用广泛,其价格受资源储量、市场需求、政策调控、国际形势等因素影响,且由于交易不频繁,历史数据样本量较少,价格波动呈现非线性特征。问题描述:某稀有金属贸易公司需要对某类重点稀有金属未来6个月的月度价格进行预测。要求模型能够利用有限的历史数据,兼顾价格的长期线性趋势(如资源稀缺导致的价格上涨)和短期非线性波动(如突发政策影响),为公司的采购和销售策略提供指导。数据情况:提供该稀有金属过去3年的月度价格数据(单位:元/千克),同时提供相关的行业政策文件、全球产量及需求量统计数据、主要贸易国的进出口情况等。数据共36条,存在个别月份因特殊事件导致的价格异常波动。案例5:GM(1,1)-BP模型稀有金属月度价格预测代码importpandasaspdimportnumpyasnpimportmatplotlib.pyplotaspltfromsklearn.preprocessingimportMinMaxScalerfromtensorflow.keras.modelsimportSequentialfromtensorflow.keras.layersimportDensefromsklearn.metricsimportmean_absolute_percentage_error#灰色预测GM(1,1)模型classGM11:def__init__(self):self.a=Noneself.b=Nonedeffit(self,x0):x1=np.cumsum(x0)#累加生成z1=(x1[:-1]+x1[1:])/2.0#紧邻均值生成B=np.vstack([-z1,np.ones_like(z1)]).TY=x0[1:].reshape(-1,1)#最小二乘法求解参数params=np.dot(np.dot(np.linalg.inv(np.dot(B.T,B)),B.T),Y)self.a,self.b=params[0][0],params[1][0]defpredict(self,x0,n_pred):x1_initial=np.cumsum(x0)[-1]predictions=[]forkinrange(1,n_pred+1):x1_pred=(x0[0]-self.b/self.a)*np.exp(-self.a*k)+self.b/self.ax0_pred=x1_pred-x1_initialpredictions.append(x0_pred)x1_initial=x1_predreturnnp.array(predictions)#数据加载与预处理data=pd.read_csv('rare_metal_price.csv',parse_dates=['month'],index_col='month')price_data=data['price'].values#划分训练集和预测期train_data=price_data[:-6]#留6个月作为测试n_pred=6#GM(1,1)模型训练与预测gm=GM11()gm.fit(train_data)gm_pred=gm.predict(train_data,n_pred)#计算GM(1,1)残差actual=price_data[-6:]gm_residual=actual-gm_pred#准备BP神经网络数据(用历史价格作为特征预测残差)defcreate_bp_data(price,residual,look_back=3):X,y=[],[]foriinrange(len(residual)):X.append(price[-(look_back+len(residual))+i:-(len(residual)-i)])y.append(residual[i])returnnp.array(X),np.array(y)look_back=3X_bp,y_bp=create_bp_data(price_data,gm_residual,look_back)#数据归一化scaler_X=MinMaxScaler()scaler_y=MinMaxScaler()X_bp_scaled=scaler_X.fit_transform(X_bp)y_bp_scaled=scaler_y.fit_transform(y_bp.reshape(-1,1))#BP神经网络构建与训练bp_model=Sequential()bp_model.add(Dense(16,input_dim=look_back,activation='relu'))bp_model.add(Dense(8,activation='relu'))bp_model.add(Dense(1))bp_pile(loss='mse',optimizer='adam')bp_model.fit(X_bp_scaled,y_bp_scaled,epochs=50,batch_size=2,verbose=1)#BP预测残差residual_pred_scaled=bp_model.predict(X_bp_scaled)residual_pred

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论