当前位置: 首页 > news >正文

重庆正云环保建设网站免费营销软件网站建设

重庆正云环保建设网站,免费营销软件网站建设,无代码编程软件,互联网行业市场分析经常会遇到一些需要预测的场景#xff0c;比如预测品牌销售额#xff0c;预测产品销量。 时间序列 今天分享一波使用 LSTM 进行端到端时间序列预测的完整代码和详细解释。 我们先来了解两个主题#xff1a; 什么是时间序列分析#xff1f; 什么是 LSTM#xff1f; 时…经常会遇到一些需要预测的场景比如预测品牌销售额预测产品销量。 时间序列 今天分享一波使用 LSTM 进行端到端时间序列预测的完整代码和详细解释。 我们先来了解两个主题 什么是时间序列分析 什么是 LSTM 时间序列分析时间序列表示基于时间顺序的一系列数据。它可以是秒、分钟、小时、天、周、月、年。未来的数据将取决于它以前的值。 在现实世界的案例中我们主要有两种类型的时间序列分析 单变量时间序列只有一列因此即将到来的未来值将仅取决于它之前的值。如仅依据历史销量数据预测未来数据 多元时间序列不同类型的特征值并且目标数据将依赖于这些特征。如除历史销量数据外还有促销活动、节假日等特征 对于单变量时间序列数据我们将使用单列进行预测。 LSTM 其他前置LSTMLSTM基本上是一个循环神经网络能够处理长期依赖关系。 假设你在看一部电影。所以当电影中发生任何情况时你都已经知道之前发生了什么并且可以理解因为过去发生的事情所以才会有新的情况发生。RNN也是以同样的方式工作它们记住过去的信息并使用它来处理当前的输入。RNN的问题是由于渐变消失它们不能记住长期依赖关系。因此为了避免长期依赖问题设计了lstm。 LSTM 是一个神经网络更具体是RNN Recurrent 所以我们需要用keras 基于tensorflow库LSTM 相比于一般的神经网络NN增加了长时记忆与短时记忆。 LSTM 相比于一般的RNN有效解决了梯度消失的问题。梯度消失通俗的影响就是“长期记忆的丢失”。LSTM 相比于一般的RNN从设计的角度来看核心是多了一个cell。次核心是因为多了一个cell每一步的迭代中重新设计了遗忘门输入门和输出门以及cell状态的更新。 下面开始编码实现 代码实现 数据集格式调整 为了便于方便取出所需要的列格式如下图所示Date表示日期列Product表示产品列nums表示销售数量列。下面开始训练模型进行预测。 1、导入需要用到的库 请确保你已经安装了所需的库可以使用以下命令进行安装 pip install pandas numpy scikit-learn tensorflow导入模型训练所需要的库 import pandas as pd import numpy as np from sklearn.preprocessing import MinMaxScaler from tensorflow.keras.models import Sequential from tensorflow.keras.layers import LSTM, Dense读取CSV文件 df pd.read_csv(weekly_product.csv)将日期转换为Datetime对象 df[Date] pd.to_datetime(df[Date], format%Y/%m/%d)按照日期升序排序 df.sort_values(byDate, inplaceTrue)确保数据按日期升序排列 df.reset_index(dropTrue, inplaceTrue)提取唯一的商品名称 products df[Product].unique()创建一个空的DataFrame用于存储预测结果 predicted_df pd.DataFrame(columns[Date, Product, nums])针对每种商品进行预测 for product in products:product_df df[df[Product] product].copy()# 提取销售数量并进行归一化sales product_df[nums].values.reshape(-1, 1)scaler MinMaxScaler(feature_range(0, 1))sales_scaled scaler.fit_transform(sales)# 将数据拆分为输入序列和目标值X, y [], []for i in range(len(sales_scaled) - 10):X.append(sales_scaled[i:i10, 0])y.append(sales_scaled[i10, 0])X, y np.array(X), np.array(y)# 将数据重塑为LSTM模型所需的形状 (samples, time steps, features)X np.reshape(X, (X.shape[0], X.shape[1], 1))# 构建LSTM模型model Sequential()model.add(LSTM(units50, return_sequencesTrue, input_shape(X.shape[1], 1)))model.add(LSTM(units50))model.add(Dense(units1))# 编译模型model.compile(optimizeradam, lossmean_squared_error)# 训练模型model.fit(X, y, epochs50, batch_size32)# 预测未来10周的销售数据future_dates pd.date_range(start2023-10-02, periods10, freqW)future_sales []for i in range(10):input_data sales_scaled[-10:].reshape(1, 10, 1)predicted_sales model.predict(input_data)future_sales.append(predicted_sales[0, 0])# 更新输入数据加入新的预测值sales_scaled np.concatenate([sales_scaled, predicted_sales], axis0)# 反归一化future_sales scaler.inverse_transform(np.array(future_sales).reshape(-1, 1))# 计算模型的性能指标true_sales product_df[nums].values[-10:]mse mean_squared_error(true_sales, future_sales)mae mean_absolute_error(true_sales, future_sales)print(fProduct: {product})print(fMean Squared Error: {mse})print(fMean Absolute Error: {mae})# 创建预测数据的DataFramefuture_df pd.DataFrame({Date: future_dates, Product: product, nums: future_sales.flatten()})# 将预测数据追加到原始数据框中predicted_df pd.concat([predicted_df, future_df], ignore_indexTrue) 最后保存最终的预测数据框到CSV文件 predicted_df.to_csv(predicted_sales_MAE.csv, indexFalse)模型的性能指标 在时间序列预测任务中精确率precision和召回率recall等常用的分类模型评价指标通常不直接适用。取而代之的是可以使用回归模型的评价指标例如均方根误差RMSE或平均绝对误差MAE来评估模型的性能。 在回归任务中常用的评价指标包括均方根误差Root Mean Squared ErrorRMSE和平均绝对误差Mean Absolute ErrorMAE。这些指标用于衡量模型的预测值与实际值之间的差异。 这些指标的解释如下 RMSE解释 如果RMSE等于0表示模型的预测完全准确没有任何误差。RMSE的值越小越好因为它表示预测值与实际值之间的差异越小。 MAE解释 MAE的值越小越好它表示模型的平均预测误差有多大。与RMSE不同MAE不会受到异常值的影响因为它使用的是绝对值。 在使用这些指标时通常会选择适合问题特点的一个或多个指标进行评估。 完整代码 为了使模型更加复用性将上面代码拆分成两个文件一个用于模型的训练和保存另一个用于加载模型并进行预测。请确保你有 pandas, numpy, scikit-learn, 和 tensorflow 安装在你的环境中。 File 1: train_and_save_model.py import pandas as pd import numpy as np from sklearn.preprocessing import MinMaxScaler from tensorflow.keras.models import Sequential from tensorflow.keras.layers import LSTM, Dense from sklearn.metrics import mean_squared_error, mean_absolute_error# Read the CSV file df pd.read_csv(weekly_product.csv)# Convert the Date column to datetime df[Date] pd.to_datetime(df[Date], format%Y/%m/%d)# Sort the dataframe by date df.sort_values(byDate, inplaceTrue) df.reset_index(dropTrue, inplaceTrue)# Extract unique product names products df[Product].unique()# Train and save a model for each product for product in products:product_df df[df[Product] product].copy()# Extract and normalize sales datasales product_df[nums].values.reshape(-1, 1)scaler MinMaxScaler(feature_range(0, 1))sales_scaled scaler.fit_transform(sales)# Prepare the input sequences and target valuesX, y [], []for i in range(len(sales_scaled) - 10):X.append(sales_scaled[i:i 10, 0])y.append(sales_scaled[i 10, 0])X, y np.array(X), np.array(y)# Reshape the data for LSTM modelX np.reshape(X, (X.shape[0], X.shape[1], 1))# Build the LSTM modelmodel Sequential()model.add(LSTM(units50, return_sequencesTrue, input_shape(X.shape[1], 1)))model.add(LSTM(units50))model.add(Dense(units1))model.compile(optimizeradam, lossmean_squared_error)model.fit(X, y, epochs50, batch_size32)# Save the modelmodel.save(fmodel_{product}.h5)# Evaluate the model on the training datatrain_predictions model.predict(X)train_predictions scaler.inverse_transform(train_predictions)true_sales product_df[nums].values[10:]mse mean_squared_error(true_sales, train_predictions)mae mean_absolute_error(true_sales, train_predictions)print(fProduct: {product})print(fMean Squared Error on Training Data: {mse})print(fMean Absolute Error on Training Data: {mae}) File 2: load_and_predict_model.py import pandas as pd import numpy as np from sklearn.preprocessing import MinMaxScaler from tensorflow.keras.models import load_model import datetime# Function to load the trained model and make predictions def predict_sales(product, date_str):# Load the saved modelmodel load_model(fmodel_{product}.h5)# Read the CSV filedf pd.read_csv(weekly_product.csv)# Convert the input date string to datetimeinput_date datetime.datetime.strptime(date_str, %Y/%m/%d)# Filter data for the given product and dateproduct_df df[(df[Product] product) (df[Date] input_date)].copy()# Extract and normalize sales datasales product_df[nums].values.reshape(-1, 1)scaler MinMaxScaler(feature_range(0, 1))sales_scaled scaler.fit_transform(sales)# Prepare the input sequence for predictioninput_sequence sales_scaled[-10:].reshape(1, 10, 1)# Make predictionspredicted_sales_scaled model.predict(input_sequence)# Inverse transform to get the actual sales valuespredicted_sales scaler.inverse_transform(predicted_sales_scaled)return predicted_sales[0, 0]# Example usage product_name example_product prediction_date 2023/11/20 predicted_sales predict_sales(product_name, prediction_date) print(fPredicted Sales for {product_name} on {prediction_date}: {predicted_sales}) 在上述代码中train_and_save_model.py 文件用于训练模型并保存而 load_and_predict_model.py 文件用于加载保存的模型并进行预测。在 load_and_predict_model.py 中可以通过调用 predict_sales 函数来得到指定商品在指定日期的销售预测。
http://www.pierceye.com/news/305720/

相关文章:

  • 珠海附近交友平台软件广州网站优化推广方案
  • cgi做网站如何将网站加入百度图 推广
  • 小贷做网站深圳手机app软件开发
  • 上海平台网站建设费用页面模板不存在怎么办
  • 西安网站排名公司上海工商网查询官网
  • 网站建设协调机制建网站 可以看到访客吗
  • 学生做网站的工作室南和住房和城乡建设局网站
  • 潍坊网站制作案例广东十大网站建设排名
  • 网站建设市场调研框架网站建设流程步骤怎么样
  • 喜茶品牌策划全案案例seo技术
  • 简速做网站中国企业网站建设案例
  • 做网站不给源码莱州网站建设包年多少钱
  • 好玩有趣的网站贵州省城乡建设厅网站材料价
  • 投资公司网站设计上海自动seo
  • 网络营销导向网站建设的基础是什么创新驱动发展战略的内容
  • 银狐鑫诺科技 网站建设深圳画册设计价格
  • 邵阳网站建设推广优化游戏性能的软件
  • wp做网站难吗销售产品单页面网站模板
  • 网站子域名 更换网站开发什么方式
  • 学做面食最好的网站设计公司logo大全
  • wordpress建站入门手机网站跳转怎么办
  • 好网站开发培训wordpress是否免费
  • 建设国际互联网网站网站建设制作流程
  • 开发一个网站做爬虫手机网站建设视频
  • 网站搜索功能模块公众号开发菜单
  • 公司想做个自己的网站怎么做网络营销与管理专业
  • 网站设计中国内优秀企业网站欣赏深圳商城网站设计公司
  • 泌阳县住房和城乡建设局网站wordpress注册去掉电子邮件
  • 电商网站设计目的活动策划怎么写
  • 做网站有限公司智慧团建官方网站