《人工智能通识》-Chap 11 人工智智能在金融领域中的应用-课程实验_第1页
《人工智能通识》-Chap 11 人工智智能在金融领域中的应用-课程实验_第2页
《人工智能通识》-Chap 11 人工智智能在金融领域中的应用-课程实验_第3页
《人工智能通识》-Chap 11 人工智智能在金融领域中的应用-课程实验_第4页
《人工智能通识》-Chap 11 人工智智能在金融领域中的应用-课程实验_第5页
已阅读5页,还剩2页未读, 继续免费阅读

下载本文档

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

文档简介

《人工智能通识》实验任务报告实验章节:学生姓名: 专业班级: 学号: 机械工业出版社《第十一章人工智能在金融领域中的应用》课程实验姓名学号班级实验地点指导教师时间实验任务任务名称基于长短记忆网络的股票价格预测任务目标本实验将时间序列分析与深度学习技术应用于金融领域,构建基于LSTM(长短记忆网络)的股票价格预测模型。该模型通过捕捉历史股价的时序依赖关系,实现对未来走势的预测,为投资决策提供数据支持。核心目标:利用历史股票数据(开盘价、收盘价、成交量等),训练LSTM模型,预测未来股价趋势。具体任务内容(1)数据收集与预处理:获取清洗后的股票时序数据。(2)特征工程:构建包含技术指标(如移动均线、RSI)的特征向量。(3)模型构建与训练:设计并训练LSTM神经网络。(4)模型评估:使用回测机制评估预测准确性与策略收益。(5)可视化分析:展示预测结果与实际走势对比。成果要求(1)实验报告一份,详细记录实验流程、问题解决过程及预测结果。(2)完整的代码实现,包括数据处理、模型训练和预测部分。(3)训练好的股票价格预测模型及可视化分析报告。实验报告实验任务利用长短记忆网络构建股票价格预测模型,实现对未来走势的预测,为投资决策提供数据支持。掌握以下技能:(1)从Python数据处理到深度学习框架的实操能力。(2)金融时序数据的模式识别与解释能力。(3)理解AI在金融领域的应用边界与伦理要求。(4)量化分析、算法交易等前沿岗位的核心竞争力。2、实验环境(1)硬件环境:处理器:IntelCorei5及以上内存:8GB及以上显卡:NVIDIAGPU(推荐,加速LSTM训练)(2)软件环境:操作系统:Windows/macOS/LinuxPython版本:3.8及以上主要依赖库:pandas,

numpy,

matplotlib,

scikit-learn,

pytorch

/

tensorflow,

yfinance。3、任务完成及步骤【分解任务1】:数据收集与预处理实验步骤:(1)使用yfinance库下载目标股票历史数据。(2)清洗数据:处理缺失值、异常值。(3)选择关键特征:开盘价(Open)、最高价(High)、最低价(Low)、收盘价(Close)、成交量(Volume)。importpandasaspdimportyfinanceasyfimportnumpyasnp#下载数据data=yf.download('AAPL',start='2010-01-01',end='2025-5-31')#计算简单移动平均线(SMA)data['SMA_20']=data['Close'].rolling(window=20).mean()#计算相对强弱指数(RSI)delta=data['Close'].diff()gain=delta.where(delta>0,0)loss=-delta.where(delta<0,0)avg_gain=gain.rolling(window=14).mean()avg_loss=loss.rolling(window=14).mean()rs=avg_gain/avg_lossdata['RSI']=100-(100/(1+rs))#删除包含NaN的行data.dropna(inplace=True)实验结果:(1)xxxxxx实验总结:(1)成功获取并构建包含原始价格和衍生技术指标的特征数据集。【分解任务2】:特征工程与数据标准化实验步骤:将数据转换为监督学习格式:使用过去lookback天的数据预测未来forecast_horizon天的价格。(2)将特征集与目标变量(通常是未来收盘价)分离。(3)对特征数据进行标准化(MinMaxScaler或StandardScaler)。(4)划分训练集、验证集和测试集。fromsklearn.preprocessingimportMinMaxScalerfromsklearn.model_selectionimporttrain_test_split#定义目标变量(预测未来1天收盘价)target=data['Close'].shift(-1)#下一天的收盘价data=data.dropna()#再次删除最后一行NaNtarget=target[data.index]#对齐索引#分离特征和目标features=data[['Open','High','Low','Close','Volume','SMA_20','RSI']]#示例特征scaler=MinMaxScaler(feature_range=(0,1))scaled_features=scaler.fit_transform(features)#创建时间序列样本(X)和标签(y)lookback=60#使用过去60天预测X,y=[],[]foriinrange(lookback,len(scaled_features)):X.append(scaled_features[i-lookback:i])#过去lookback天的特征y.append(target.iloc[i])#第i天的目标(即下一天的收盘价)X,y=np.array(X),np.array(y)#划分数据集(70%训练,15%验证,15%测试)X_train,X_temp,y_train,y_temp=train_test_split(X,y,test_size=0.3,shuffle=False)X_val,X_test,y_val,y_test=train_test_split(X_temp,y_temp,test_size=0.5,shuffle=False)实验结果:(1)xxxxxx实验总结:(1)遇到xx问题,解决方法;总结xx经验。【分解任务3】:LSTM模型构建与训练实验步骤:(1)使用PyTorch或TensorFlow/Keras构建LSTM模型。importtorchimporttorch.nnasnnclassLSTMStockPredictor(nn.Module):def__init__(self,input_size,hidden_size,num_layers,output_size):super().__init__()self.hidden_size=hidden_sizeself.num_layers=num_layersself.lstm=nn.LSTM(input_size,hidden_size,num_layers,batch_first=True)self.fc=nn.Linear(hidden_size,output_size)defforward(self,x):h0=torch.zeros(self.num_layers,x.size(0),self.hidden_size).to(x.device)c0=torch.zeros(self.num_layers,x.size(0),self.hidden_size).to(x.device)out,_=self.lstm(x,(h0,c0))out=self.fc(out[:,-1,:])#只取最后一个时间步的输出returnout#定义模型参数input_size=X_train.shape[2]#特征数量hidden_size=50num_layers=2output_size=1model=LSTMStockPredictor(input_size,hidden_size,num_layers,output_size)(2)定义损失函数和优化器。(3)在训练集上训练模型,使用验证集监控过拟合并调整超参数。criterion=nn.MSELoss()optimizer=torch.optim.Adam(model.parameters(),lr=0.001)num_epochs=100forepochinrange(num_epochs):outputs=model(X_train_tensor)#假设已将数据转为PyTorchTensorloss=criterion(outputs,y_train_tensor)optimizer.zero_grad()loss.backward()optimizer.step()实验结果:(1)xxxxxx实验总结:(1)遇到xx问题,解决方法;总结xx经验。【分解任务4】模型评估与预测实验步骤:(1)在测试集上进行预测。(2)将预测结果反标准化,还原到原始价格尺度。(3)计算评估指标:(4)均方根误差(RMSE):np.sqrt(mean_squared_error(y_true,y_pred))(5)平均绝对误差(MAE):mean_absolute_error(y_true,y_pred)(6)平均绝对百分比误差(MAPE):np.mean(np.abs((y_true-y_pred)/y_true))*100(7)方向精度(DA):预测价格涨跌方向正确的比例。(8)可视化:绘制真实股价曲线与模型预测曲线对比图。#在测试集上预测model.eval()withtorch.no_grad():test_predictions=model(X_test_tensor).numpy()#反标准化预测值(需要小心操作,通常需要构建一个包含预测列的假数据框来反标准化)#假设我们只反标准化预测的收盘价#更严谨的做法需要反标准化整个特征向量,但通常我们只关心预测的收盘价dummy_test=np.zeros((len(test_predictions),features.shape[1]))dummy_test[:,features.columns.get_loc('Close')]=test_predictions.squeeze()#假设预测的是Closetest_predictions_inv=scaler.inverse_transform(dummy_test)[:,features.columns.get_loc('Close')]#反标准化真实值(y_test)#计算RMSEfromsklearn.metricsimportmean_squared_errorrmse=np.sqrt(mean_squared_error(y_test_true_inv,test_predictions_inv))print(f'TestRMSE:{rmse:.2f}')#绘图plt.figure(figsize=(12,6))plt.plot(y_test_true_inv,label='ActualPrice')plt.plot(test_predictions_inv,label='PredictedPrice')plt.title('StockPricePrediction')plt.xlabel('Time')plt.ylabel('Price')plt.legend()plt.show()实验结果:(1)xxxxxx实验总结:(1)遇到xx问题,解决方法;总结xx经验。实验总结(1)成功构

温馨提示

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

评论

0/150

提交评论