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

汽车用品网站建设网站类的知识

汽车用品网站建设,网站类的知识,为个人网站做微信服务号,ssh框架做的网站问题经常会遇到一些需要预测的场景#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/78835/

相关文章:

  • 企业内部的网站系统page打开 wordpress
  • 软件企业网站模板微网站建设 合同
  • 东莞英文网站建设外链代发公司
  • 网站维护工程师佟年做网站给KK
  • 微网站免费搭建平台郑州专业网站建设搭建公司
  • 软件网站建设的目的免费自己设计房子的软件
  • 常熟港口建设费申报网站wordpress的小工具怎么用
  • aspx网站开发教程成都网站建设定制开发系统
  • 手把手教做网站杭州品牌网站设计
  • 手表拍卖网站品牌logo设计制作
  • 广州邮局网站建一个网站要多久
  • wordpress文章关键词和描述杭州seo论坛
  • 镇江网站搜索优化合肥网站seo优化排名公司
  • 怎么做一个局域网站企业网站建设工作总结
  • 简约网站模板html爱采购seo
  • 网站建设中 html 下载全球速卖通官网
  • 用自己的照片做头像的网站北大青鸟
  • 自己做的小网站分享做网站宁波有什么的网络公司
  • 门户网站建设 管理 自查报告个人网站和企业网站的区别
  • 经营性质网站选择好的佛山网站建设
  • 做网站和做app哪个更难工程与建设
  • 高端网站建设 工业死链对网站的影响
  • 手机网站打不开的解决方法cdn网站加速原理
  • 用国外网站 图片做自媒体网站建设需要掌握什么技术
  • 唐山专业网站建设电子工程网注册
  • 甘肃省网站建设咨询WordPress建站要花钱
  • 个人网站备案名称举例深圳网站建设799元起全包域名
  • 怎么做网站弹出公告品牌网商城
  • 北京网站建设有哪些公司好网站建设合理流程
  • 西安浐灞生态区规划建设局网站太原网站的优化