Gx
主页
  • 甘特图开发
  • 前端考核
  • js
  • DOCKER 初始化
  • docker 镜像使用
  • docker 镜像定制
  • nestjs 安装
  • 连接数据库
  • typeOrm 操作
  • 任务调度
  • typeorm 一对多,多对一 多对多 一对一 对应实体之间的关系
  • sql 练习
  • 文件相关
  • ts学习
  • 面试题
  • rust
  • 入门
  • 基础
  • 性能公式
  • 线性回归
  • 基础语法
  • 数据类型
  • 复合类型
  • rust 控制流 匹配模式
  • ❤️ 父子传参
  • 🔔 Git的提交规则
主页
  • 甘特图开发
  • 前端考核
  • js
  • DOCKER 初始化
  • docker 镜像使用
  • docker 镜像定制
  • nestjs 安装
  • 连接数据库
  • typeOrm 操作
  • 任务调度
  • typeorm 一对多,多对一 多对多 一对一 对应实体之间的关系
  • sql 练习
  • 文件相关
  • ts学习
  • 面试题
  • rust
  • 入门
  • 基础
  • 性能公式
  • 线性回归
  • 基础语法
  • 数据类型
  • 复合类型
  • rust 控制流 匹配模式
  • ❤️ 父子传参
  • 🔔 Git的提交规则
  • 性能公式

性能公式

均方根误差 RMSE ‖·‖2

RMSE = √[ (1/n) × Σ(y_i - ŷ_i)² ]

  • y_i = 第 i 个实际值
  • ŷ_i = 第 i 个预测值
  • n = 样本数量
  • Σ = 求和符号(对所有样本 i=1 到 n)

计算步骤

  1. 计算每个预测的误差:e_i = y_i - ŷ_i
  2. 计算误差的平方:e_i²
  3. 计算平方和:SSE = Σ e_i²
  4. 计算平均值:MSE = SSE / n
  5. 取平方根:RMSE = √(MSE)
import numpy as np

def rmse(actual, predicted):
    return np.sqrt(np.mean((np.array(actual) - np.array(predicted))**2))

# 使用示例
actual = [3, -0.5, 2, 7]
predicted = [2.5, 0.0, 2, 8]
print(f"RMSE: {rmse(actual, predicted):.3f}")

平均绝对误差(MAE)公式 ‖·‖1

MAE = (1/n) × Σ|y_i - ŷ_i|

  • y_i = 第 i 个实际值
  • ŷ_i = 第 i 个预测值
  • n = 样本数量
  • | | = 绝对值符号
  • Σ = 求和符号(对所有样本 i=1 到 n)

计算步骤

  1. 计算每个预测的误差:e_i = y_i - ŷ_i
  2. 取绝对值:|e_i|
  3. 计算绝对误差的和:SAE = Σ|e_i|
  4. 计算平均值:MAE = SAE / n
import numpy as np
def mae(actual, predicted):
    return np.mean(np.abs(np.array(actual) - np.array(predicted)))
    
actual = [3, -0.5, 2, 7]
predicted = [2.5, 0.0, 2, 8]

print(f"mae: {mae(actual, predicted):.3f}")

移动平均线(均线,MA)

基本概念

移动平均线是趋势指标,用于平滑价格数据,识别趋势方向。

简单移动平均线(sma)

SMA = (P1 + P2 + ... + PN) / N

SMA = (P1 + P2 + ... + PN) / N
# 其中,P为收盘价,N为周期数。

指数移动平均线(EMA)

EMA_today = (Price_today * (2/(N+1))) + (EMA_yesterday * (1 - 2/(N+1)))

import numpy as np
import pandas as pd

# 简单移动平均线
def calculate_sma(prices, period):
    return prices.rolling(window=period).mean()

# 指数移动平均线
def calculate_ema(prices, period):
    return prices.ewm(span=period, adjust=False).mean()

# 示例
# 假设我们有一个包含收盘价的Series:close_prices
# sma_10 = SMA(close_prices, 10)
# ema_10 = EMA(close_prices, 10)

# 示例数据
dates = pd.date_range('2023-01-01', periods=100, freq='D')
np.random.seed(42)
close_prices = 100 + np.cumsum(np.random.randn(100))  # 模拟价格数据

# 转换为Series
price_series = pd.Series(close_prices, index=dates)

# 计算不同周期的移动平均线
sma_10 = calculate_sma(price_series, 10)
sma_20 = calculate_sma(price_series, 20)
ema_10 = calculate_ema(price_series, 10)

print(f"SMA 10日: {sma_10.iloc[-1]:.2f}")
print(f"SMA 20日: {sma_20.iloc[-1]:.2f}")
print(f"EMA 10日: {ema_10.iloc[-1]:.2f}")
最近更新: 2026/2/10 02:20
Contributors: g_xing