Python数学建模

  1. 「线性回归(Linear Regression)」

    • 「原理」:线性回归试图找到特征和目标变量之间的线性关系。在时间序列预测中,它可以通过使用过去的数据点来预测未来的值。

    • 「实例」

      import numpy as np
      from sklearn.linear_model import LinearRegression
      import matplotlib.pyplot as plt

      # 生成模拟数据:10个时间点
      X = np.array([[i] for i in range(111)])
      y = 3 * X[:, 0] + np.random.randn(*X.shape)  # y = 3x + noise

      # 建立线性回归模型
      model = LinearRegression()
      model.fit(X, y)

      # 预测下一个时间点
      next_time_point = np.array([[11]])
      prediction = model.predict(next_time_point)

      # 可视化
      plt.scatter(X[:, 0], y, color='blue')
      plt.plot(X[:, 0], model.predict(X), color='red', linewidth=2)
      plt.scatter(next_time_point, prediction, color='green')
      plt.show()
  2. 「移动平均(Moving Average)」

    • 「原理」:移动平均通过计算特定时间窗口内的平均值来平滑数据,从而预测未来值。

    • 「实例」

      # 生成模拟数据:10个时间点
      data = np.random.rand(10)

      # 计算最后3个数据点的移动平均
      moving_average = sum(data[-3:]) / 3

      # 打印结果
      print("Last 3 data points moving average:", moving_average)
  3. 「指数平滑(Exponential Smoothing)」

    • 「原理」:指数平滑通过给过去的观测值赋予指数递减的权重来平滑数据。

    • 「实例」

      # 生成模拟数据:10个时间点
      data = np.random.rand(10)

      # 指数平滑预测
      def exponential_smoothing(data, alpha):
          if len(data) == 1:
              return data[0]
          else:
              return alpha * data[-1] + (1 - alpha) * exponential_smoothing(data[:-1], alpha)

      alpha = 0.2  # 平滑参数
      prediction = exponential_smoothing(data, alpha)

      # 打印结果
      print("Exponential smoothing prediction:", prediction)
  4. 「时间序列分解(Time Series Decomposition)」

    • 「原理」:时间序列分解将时间序列分解为趋势、季节性和随机成分。

    • 「实例」

      from statsmodels.tsa.seasonal import seasonal_decompose
      import pandas as pd

      # 生成模拟数据:10个时间点
      data = pd.Series(np.random.rand(10), name='Data')

      # 进行时间序列分解
      decomposition = seasonal_decompose(data, model='additive', period=1)

      # 获取分解后的成分
      trend = decomposition.trend.dropna()
      seasonal = decomposition.seasonal.dropna()
      residual = decomposition.resid.dropna()

      # 预测下一个时间点
      prediction = trend.iloc[-1] + seasonal.iloc[-1]

      # 打印结果
      print("Next point prediction:", prediction)
  5. 「随机森林(Random Forest)」

    • 「原理」:随机森林通过构建多个决策树并进行平均或多数投票来提高模型的性能。

    • 「实例」

      from sklearn.ensemble import RandomForestRegressor
      import pandas as pd

      # 生成模拟数据:10个时间点
      data = pd.DataFrame({'Time'range(111), 'Value': np.random.rand(10)})

      # 准备特征和目标
      X = data[['Time']]
      y = data['Value']

      # 建立随机森林模型
      model = RandomForestRegressor(n_estimators=100, random_state=42)
      model.fit(X, y)

      # 预测下一个时间点
      next_time_point = pd.DataFrame({'Time': [11]})
      prediction = model.predict(next_time_point)

      # 打印结果
      print("Random Forest prediction:", prediction)


原文始发于微信公众号(python学霸):Python数学建模

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/288530.html

(0)
土豆大侠的头像土豆大侠

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!