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

tsfresh:时间序列特征自动提取与应用

tsfresh:时间序列特征自动提取与应用

本文系统介绍了 tsfresh 技术在 A 股市场数据分析与量化投资中的应用。从基础特征提取到高级策略开发,结合实战案例,详细讲解了如何利用 tsfresh 构建量化投资策略,并优化风险控制,助力读者全面掌握时间序列特征提取在量化领域的技术应用。
文中内容仅限技术学习与代码实践参考,市场存在不确定性,技术分析需谨慎验证,不构成任何投资建议。适合量化新手建立系统认知,为策略开发打下基础。

第一章:tsfresh 技术概述与环境搭建

1.1 tsfresh 简介

tsfresh 是一个用于时间序列特征提取的 Python 库,它能够自动从时间序列数据中提取大量特征,并通过统计检验筛选出与目标变量相关的特征,简化了时间序列数据分析流程,广泛应用于预测维护、金融分析等领域。

1.2 环境搭建

tsfresh 安装

pip install "tsfresh[dask]"

推荐阅读:Dask:Python高效并行计算利器 🔥

验证安装成功与否

安装完成后,可以通过以下Python代码验证tsfresh是否安装成功:

import tsfresh
print(tsfresh.__version__)

如果输出了版本号,说明安装成功。

相关依赖库安装

# 安装 pandas、numpy、matplotlib 等库
pip install pandas numpy matplotlib

Tushare 数据接口申请与配置

  1. 访问 Tushare 官网 注册账号并获取 API Token。
  2. 安装 Tushare Python SDK:
pip install tushare
  1. 配置 Tushare API:
import tushare as ts
ts.set_token("your_token")  # 替换为你的Tushare Token
pro = ts.pro_api()

1.3 数据准备

使用 Tushare 获取 A 股市场数据

import pandas as pd# 获取某股票的历史日线数据
def get_stock_data(ts_code, start_date, end_date):df = pro.daily(ts_code=ts_code, start_date=start_date, end_date=end_date)return df# 示例:获取股票 000001.SZ 的 2024年数据
stock_data = get_stock_data("000001.SZ", "20240101", "20241231")
stock_data["trade_date"] = pd.to_datetime(stock_data["trade_date"])
stock_data.sort_values("trade_date", inplace=True)
print(stock_data.head())

数据存储与管理

Parquet是一种高效的列式存储格式,适用于大数据处理。它具有高压缩比和快速读取的特点,适合存储大规模数据。

推荐阅读:

  • Pandas+PyArrow:股票数据存储 Parquet 入门指引 🔥
  • A股数据存储实战:Parquet技术深度解析 🔥
# 将获取的数据存储为Parquet文件
stock_data.to_parquet("./data/000001.SZ.parquet", index=False)# 从Parquet文件读取数据
stock_data = pd.read_parquet("./data/000001.SZ.parquet")print(stock_data.head())

数据清洗与预处理

# 检查缺失值
print(stock_data.isnull().sum())# 处理缺失值,例如用前一日数据填充
stock_data.fillna(method="ffill", inplace=True)# 按交易日期排序
stock_data.sort_values("trade_date", inplace=True)

第二章:时间序列特征提取基础

2.1 时间序列特征提取概述

时间序列特征提取是从时间序列数据中提取出能够代表其主要特征的信息,这些特征可以用于后续的数据分析、建模和预测。在金融领域,时间序列特征提取可以帮助我们理解市场趋势、识别交易模式、构建预测模型等。

tsfresh 提供了全面的特征提取功能,能够自动从时间序列数据中提取大量特征,并通过统计检验筛选出与目标变量相关的特征,大大简化了特征工程的流程。

2.2 基本特征提取方法

统计特征

统计特征是最基本的特征类型,包括均值、方差、中位数、极值等。这些特征能够反映时间序列数据的集中趋势和离散程度。

from tsfresh import extract_features# 假设 stock_data 是之前获取的股票数据,包含 'close' 列
# 为 tsfresh 准备数据,需要将时间序列数据整理成特定格式
def prepare_tsfresh_data(stock_data):# 为每行数据添加一个唯一标识符,表示属于同一个时间序列stock_data["id"] = range(0, len(stock_data))# 选择需要的列,包括标识符、时间戳和目标值ts_data = stock_data[["id", "trade_date", "close"]]return ts_datats_data = prepare_tsfresh_data(stock_data)# 提取统计特征
statistical_features = extract_features(ts_data,column_id="id",column_sort="trade_date",column_value="close",default_fc_parameters={"mean": None,"variance": None,"median": None,"maximum": None,"minimum": None,},
)
print(statistical_features)

时间域特征

时间域特征关注时间序列在时间维度上的变化特性,如趋势、周期性、波动性等。

# 定义要提取的时间域特征
time_domain_features = {"abs_energy": None,"absolute_sum_of_changes": None,"cid_ce": [{"normalize": True}, {"normalize": False}],"friedrich_coefficients": [{"coeff": 0, "m": 3, "r": 30}],"linear_trend": [{"attr": "pvalue"},{"attr": "rvalue"},{"attr": "intercept"},{"attr": "slope"},{"attr": "stderr"},],"spkt_welch_density": [{"coeff": 2}],"binned_entropy": [{"max_bins": 10}],
}# 提取时间域特征
td_features = extract_features(ts_data,column_id="id",column_sort="trade_date",column_value="close",default_fc_parameters=time_domain_features,
)
print(td_features)

频域特征

频域特征通过傅里叶变换等方法将时间序列数据转换到频域,提取频率成分、功率谱等信息。

# 提取频域特征
frequency_domain_features = {"fft_aggregated": [{"aggtype": "centroid"},{"aggtype": "variance"},{"aggtype": "skew"},{"aggtype": "kurtosis"},],"fft_coefficient": [{"coeff": 0, "attr": "real"}, {"coeff": 1, "attr": "real"}],"index_mass_quantile": [{"q": 0.5}],"number_peaks": [{"n": 10}],
}fd_features = extract_features(ts_data,column_id="id",column_sort="trade_date",column_value="close",default_fc_parameters=frequency_domain_features,
)
print(fd_features)

2.3 实战:对 A 股某股票的历史价格数据进行基本特征提取

# 综合提取统计特征、时间域特征和频域特征
from tsfresh.feature_extraction import ComprehensiveFCParameters# 定义综合特征提取参数
comprehensive_features = ComprehensiveFCParameters()
# 移除不需要的特征
comprehensive_features.pop("fft_aggregated", None)
comprehensive_features.pop("fft_coefficient", None)
comprehensive_features.pop("index_mass_quantile", None)
comprehensive_features.pop("number_peaks", None)
comprehensive_features.pop("spectral_entropy", None)# 提取综合特征
all_features = extract_features(ts_data,column_id="id",column_sort="trade_date",column_value="close",default_fc_parameters=comprehensive_features,
)# 查看提取的特征
print(all_features.head())# 特征可视化
import matplotlib.pyplot as plt# 绘制收盘价走势图
plt.figure(figsize=(10, 6))
plt.plot(stock_data["trade_date"], stock_data["close"])
plt.title("Stock Closing Price Trend")
plt.xlabel("Trade Date")
plt.ylabel("Closing Price")
plt.show()# 绘制提取的特征分布
import randomsampled_features = random.sample(all_features.columns.tolist(), 25
)  # 随机选取25个特征示例
all_features[sampled_features].plot(kind="hist", subplots=True, layout=(5, 5), figsize=(15, 15)
)
plt.legend()
plt.show()

第三章:高级时间序列特征提取

3.1 高级特征提取技术

自动特征提取

tsfresh 的强大之处在于其能够自动从时间序列数据中提取大量特征,无需手动定义每个特征。

from tsfresh import extract_features
from tsfresh.feature_extraction import ComprehensiveFCParameters# 定义自动特征提取参数
automatic_features = ComprehensiveFCParameters()# 提取自动特征
auto_features = extract_features(ts_data,column_id="id",column_sort="trade_date",column_value="close",default_fc_parameters=automatic_features,
)# 查看提取的特征数量和部分特征
print(f"Extracted {auto_features.shape[1]} features.")
print(auto_features.head())

特征筛选与选择

提取大量特征后,需要进行筛选以选择与目标变量相关的特征,减少维度并提高模型性能。

from tsfresh import select_features# 假设我们有一个目标变量,例如股票的未来收益率
# 这里需要根据实际情况构建目标变量
# target = ...# 筛选与目标变量相关的特征
selected_features = select_features(auto_features, target)# 查看筛选后的特征数量和部分特征
print(f"Selected {selected_features.shape[1]} features.")
print(selected_features.head())

特征工程技巧

  • 特征组合:将多个基础特征组合成新的特征,例如计算两个时间序列的比率或差值。
  • 时间窗口特征:在不同时间窗口上提取特征,捕捉短期和长期趋势。
  • 滞后特征:创建滞后版本的时间序列,用于捕捉过去值对当前值的影响。

3.2 实战:深入提取 A 股市场时间序列特征

多只股票数据的特征提取

from tsfresh import extract_features
from tsfresh.feature_extraction import ComprehensiveFCParameters# 定义自动特征提取参数
automatic_features = ComprehensiveFCParameters()# 为 tsfresh 准备数据
def prepare_tsfresh_data_multi(stocks_data):stocks_data["id"] = (stocks_data["ts_code"].astype(str) + "_" + stocks_data["trade_date"].astype(str))ts_data_multi = stocks_data[["id", "trade_date", "close"]]return ts_data_multits_data_multi = prepare_tsfresh_data_multi(stocks_data)# 提取多只股票的特征
auto_features_multi = extract_features(ts_data_multi,column_id="id",column_sort="trade_date",column_value="close",default_fc_parameters=automatic_features,
)# 查看提取的特征
print(auto_features_multi.head())

不同时间周期数据的特征对比

# 获取日线、周线、月线数据
def get_data_different_timeframes(ts_code, start_date, end_date):# 日线数据daily_data = pro.daily(ts_code=ts_code, start_date=start_date, end_date=end_date)# 周线数据weekly_data = pro.weekly(ts_code=ts_code, start_date=start_date, end_date=end_date)# 月线数据monthly_data = pro.monthly(ts_code=ts_code, start_date=start_date, end_date=end_date)return daily_data, weekly_data, monthly_data# 示例:获取某股票的不同时间周期数据
daily, weekly, monthly = get_data_different_timeframes("000001.SZ", "20240101", "20241231"
)# 分别提取不同时间周期的特征
def extract_features_timeframe(data, timeframe):data["id"] = [timeframe + "_" + str(i) for i in range(len(data))]ts_data = data[["id", "trade_date", "close"]]features = extract_features(ts_data,column_id="id",column_sort="trade_date",column_value="close",default_fc_parameters=automatic_features,)return featuresdaily_features = extract_features_timeframe(daily, "daily")
weekly_features = extract_features_timeframe(weekly, "weekly")
monthly_features = extract_features_timeframe(monthly, "monthly")# 合并不同时间周期的特征
all_timeframe_features = pd.concat([daily_features, weekly_features, monthly_features])
print(all_timeframe_features.head())

特征可视化与解读

# 可视化某只股票的特征分布
import matplotlib.pyplot as plt# 选择某只股票的特征数据
stock_features = auto_features_multi[auto_features_multi.index.str.contains("000001.SZ")
]# 去除 NaN 值
stock_features = stock_features.dropna(axis=1)# 绘制部分特征的分布
fig, axes = plt.subplots(nrows=3, ncols=3, figsize=(15, 10))
axes = axes.flatten()feature_columns = stock_features.columns[:9]  # 选择前 9 个特征进行可视化for i, feature in enumerate(feature_columns):axes[i].hist(stock_features[feature], bins=20)axes[i].set_title(feature)plt.tight_layout()
plt.show()

第四章:时间序列分类与回归应用

4.1 时间序列分类基础

时间序列分类是根据时间序列的特征将其划分到不同的类别中。在 A 股市场中,可以用于股票的行业分类、风格分类等。

常见分类算法

  • 逻辑回归:适用于二分类问题。
  • 支持向量机:适用于高维数据分类。
  • 随机森林:基于集成学习的分类算法,具有较高的准确性和鲁棒性。
  • 神经网络:适用于复杂模式识别。

4.2 使用 tsfresh 进行时间序列分类

特征提取与选择

from tsfresh import extract_features, select_features# 假设我们有多只股票的数据,ts_data 包含 'id'、'trade_date' 和 'close' 列
# 提取特征
features = extract_features(ts_data,column_id="id",column_sort="trade_date",column_value="close",
)# 假设我们有一个目标分类标签,例如股票的行业分类
# labels = ...# 筛选与分类相关的特征
selected_features = select_features(features, labels)# 查看筛选后的特征
print(selected_features.head())

分类模型训练与评估

from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, classification_report# 数据集划分
X_train, X_test, y_train, y_test = train_test_split(selected_features, labels, test_size=0.2, random_state=42
)# 模型训练
clf = RandomForestClassifier(n_estimators=100, random_state=42)
clf.fit(X_train, y_train)# 模型评估
y_pred = clf.predict(X_test)
print(f"Accuracy: {accuracy_score(y_test, y_pred)}")
print(classification_report(y_test, y_pred))

实战:对 A 股股票进行分类

# 获取多只股票的数据并提取特征
# 假设我们已经获取了多只股票的数据并存储在 stocks_data 中# 为 tsfresh 准备数据
ts_data = prepare_tsfresh_data_multi(stocks_data)# 提取特征
features = extract_features(ts_data,column_id="id",column_sort="trade_date",column_value="close",
)# 假设我们有一个行业分类标签字典,key 为股票代码,value 为行业分类
# industry_labels = ...# 将标签与特征数据对齐
labels = [industry_labels[id.split("_")[0]] for id in features.index]# 筛选特征
selected_features = select_features(features, labels)# 数据集划分与模型训练
X_train, X_test, y_train, y_test = train_test_split(selected_features, labels, test_size=0.2, random_state=42
)
clf = RandomForestClassifier(n_estimators=100, random_state=42)
clf.fit(X_train, y_train)# 评估模型
y_pred = clf.predict(X_test)
print(f"Accuracy: {accuracy_score(y_test, y_pred)}")
print(classification_report(y_test, y_pred))

4.3 时间序列回归分析

时间序列回归是根据时间序列的特征预测一个连续的目标值,如股票的未来价格。

常见回归算法

  • 线性回归:简单的线性模型。
  • 决策树回归:适用于非线性关系。
  • 梯度提升回归:基于梯度提升的回归算法,具有较高的预测精度。
  • 神经网络回归:适用于复杂函数逼近。

使用 tsfresh 进行时间序列回归

from sklearn.model_selection import train_test_split
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.metrics import mean_squared_error, r2_score# 假设我们已经提取了特征并存储在 features 中
# 假设我们有一个目标值,例如股票的未来收益率
# target = ...# 数据集划分
X_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.2, random_state=42
)# 模型训练
regressor = GradientBoostingRegressor(n_estimators=100, random_state=42)
regressor.fit(X_train, y_train)# 模型评估
y_pred = regressor.predict(X_test)
print(f"RMSE: {mean_squared_error(y_test, y_pred, squared=False)}")
print(f"R^2: {r2_score(y_test, y_pred)}")

实战:预测 A 股股票的未来价格走势

# 获取股票历史数据并提取特征
# 假设我们已经获取了股票数据并存储在 stock_data 中# 构建目标值,例如未来 5 天的收盘价
stock_data["future_close"] = stock_data["close"].shift(-5)# 删除未来数据缺失的行
stock_data.dropna(subset=["future_close"], inplace=True)# 为 tsfresh 准备数据
ts_data = prepare_tsfresh_data(stock_data)# 提取特征
features = extract_features(ts_data,column_id="id",column_sort="trade_date",column_value="close",
)# 将目标值与特征数据对齐
target = stock_data.loc[features.index, "future_close"]# 数据集划分与模型训练
X_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.2, random_state=42
)
regressor = GradientBoostingRegressor(n_estimators=100, random_state=42)
regressor.fit(X_train, y_train)# 评估模型
y_pred = regressor.predict(X_test)
print(f"RMSE: {mean_squared_error(y_test, y_pred, squared=False)}")
print(f"R^2: {r2_score(y_test, y_pred)}")

第五章:tsfresh 在量化投资中的高级应用

5.1 量化投资概述

量化投资是利用数学模型和计算机技术,对金融市场进行分析、预测,并制定投资策略的过程。时间序列分析在量化投资中占据重要地位,通过对历史价格、成交量等时间序列数据的分析,可以挖掘市场规律、预测价格走势。

5.2 使用 tsfresh 构建量化投资策略

特征工程与策略设计

import numpy as np
from sklearn.model_selection import train_test_split
from tsfresh import extract_features, select_features
from tsfresh.utilities.dataframe_functions import impute
from sklearn.metrics import mean_squared_error
from sklearn.ensemble import GradientBoostingRegressor
import pandas as pd# 获取股票数据
def get_stock_data(ts_code, start_date, end_date):df = pro.daily(ts_code=ts_code, start_date=start_date, end_date=end_date)return df# 构建目标变量(例如未来5天的收益率)
def build_target_variable(data, periods=-5):data["trade_date"] = pd.to_datetime(data["trade_date"])data.sort_values("trade_date", inplace=True)data["future_close"] = data["close"].shift(periods)data.dropna(subset=["future_close"], inplace=True)data["id"] = range(0, len(data))data.set_index("id", inplace=True)data.reset_index(inplace=True)return data# 提取特征
def feature_engineering(data):extracted_features = extract_features(data,column_id="id",column_sort="trade_date",column_value="close",)# 处理缺失值impute(extracted_features)target_variable = (data["future_close"] - data["close"])  # 目标变量为未来5天的收盘价变化 data["future_return"]selected_features = select_features(extracted_features, target_variable)return selected_features, target_variable# 策略设计
def strategy_development(features, variable, variables):X_train, X_test, y_train, y_test = train_test_split(features, variable, test_size=0.2, random_state=42)# 模型训练model = GradientBoostingRegressor(n_estimators=100, random_state=42)model.fit(X_train, y_train)y_pred = model.predict(X_test)mse = mean_squared_error(y_test, y_pred)print(f"均方误差(MSE):{mse}")# 策略信号生成variables["predicted_future_change"] = model.predict(features)variables["predicted_future_close"] = (variables["close"] + variables["predicted_future_change"])# 根据信号生成持仓信号variables["signal"] = np.where(variables["predicted_future_close"] > variables["close"], 1, -1)variables["strategy_returns"] = (variables["signal"].shift(1) * variables["close"].pct_change())cumulative_returns = (variables["strategy_returns"] + 1).cumprod()# 绘制结果plt.figure(figsize=(10, 6))plt.plot(cumulative_returns, label="Strategy Returns")plt.plot(stock_data["close"].pct_change().cumsum(), label="Buy and Hold")plt.title("Strategy Performance")plt.xlabel("Date")plt.ylabel("Cumulative Returns")plt.legend()plt.show()return variables# 实战:构建基于 tsfresh 的量化投资策略
stock_data = get_stock_data('000001.SZ', '20200101', '20201231')
target_variables = build_target_variable(stock_data)
selected_features, target_variable = feature_engineering(target_variables)
strategy_data = strategy_development(selected_features, target_variable, target_variables
)

策略回测与评估

import matplotlib.pyplot as plt
import numpy as np# 策略回测
def strategy_backtest(strategy_data):strategy_data["return"] = strategy_data["close"].pct_change() * strategy_data["signal"].shift(1)strategy_data["cumulative_return"] = (1 + strategy_data["return"]).cumprod()return strategy_data# 策略评估
def strategy_evaluation(strategy_data):# 计算年化收益率annual_return = (strategy_data["cumulative_return"].iloc[-1]) ** (252 / len(strategy_data)) - 1# 计算最大回撤cumulative_return = strategy_data["cumulative_return"]peak = cumulative_return.expanding(min_periods=1).max()drawdown = (cumulative_return - peak) / peakmax_drawdown = drawdown.min()# 计算夏普比率daily_return = strategy_data["return"].dropna()sharpe_ratio = daily_return.mean() / daily_return.std() * np.sqrt(252)# 打印结果print(f"Annual Return: {annual_return}")print(f"Max Drawdown: {max_drawdown}")print(f"Sharpe Ratio: {sharpe_ratio}")return annual_return, max_drawdown, sharpe_ratio# 可视化策略表现
def plot_strategy_performance(strategy_data):plt.figure(figsize=(10, 6))plt.plot(strategy_data["trade_date"], strategy_data["cumulative_return"])plt.title("Strategy Performance")plt.xlabel("Trade Date")plt.ylabel("Cumulative Return")plt.show()# 执行策略回测与评估
strategy_data = strategy_backtest(strategy_data)
strategy_evaluation(strategy_data)
plot_strategy_performance(strategy_data)

风险控制与优化

# 风险控制
def risk_management(strategy_data):# 设置止损止盈strategy_data["stop_loss"] = -0.05  # 止损5%strategy_data["stop_profit"] = 0.1  # 止盈10%# 调整仓位strategy_data["signal"] = strategy_data["signal"] * 0.5  # 降低仓位50%return strategy_data# 策略优化
def strategy_optimization(strategy_data):# 参数优化# 可以通过网格搜索、随机搜索等方法优化模型参数# 这里以调整预测周期为例target_variables = build_target_variable(stock_data, periods=-1)  # 预测3天收益率# 重新进行特征提取、模型训练和策略开发selected_features, target_variable = feature_engineering(target_variables)strategy_data = strategy_development(selected_features, target_variable, target_variables)return strategy_data# 执行风险控制与策略优化
strategy_data = risk_management(strategy_data)
strategy_data = strategy_optimization(strategy_data)
# 执行策略回测与评估
strategy_data = strategy_backtest(strategy_data)
strategy_evaluation(strategy_data)
plot_strategy_performance(strategy_data)

5.3 项目中的挑战与解决方案

  • 数据质量问题:A 股市场数据可能存在缺失、异常等情况,通过数据清洗、插值等方法进行处理。
  • 特征提取的难点:时间序列数据具有复杂的波动性和季节性,通过综合运用多种特征提取方法和参数调整,确保提取的特征具有代表性和预测能力。
  • 模型过拟合问题:通过交叉验证、正则化等手段,避免模型对训练数据的过度拟合,提高模型的泛化能力。

附录

以下是 tsfresh 提供的预定义字典及其说明:

  1. ComprehensiveFCParameters
  • 说明:包含所有特征提取函数,以及所有可能的参数组合。这是 tsfresh 默认的特征提取设置,如果不指定 default_fc_parameters,则会使用此设置。
  • 特点:计算全面,但计算成本较高。
  1. MinimalFCParameters
  • 说明:只包含少量特征提取函数,用于快速测试。
  • 特点:计算速度快,但特征覆盖范围有限。
  1. EfficientFCParameters
  • 说明:与 ComprehensiveFCParameters 类似,但去掉了标记为“高计算成本”的特征。
  • 特点:在计算效率和特征覆盖之间取得了平衡,适合对运行时间要求较高的场景。

ComprehensiveFCParameters

ComprehensiveFCParameterstsfresh 提供的一个预定义字典,用于提取时间序列的全面特征集合。它包含了所有无参数的特征提取函数,以及所有有参数的特征提取函数及其不同的参数组合。

特征提取函数名称参数
abs_energy无参数
absolute_sum_of_changes无参数
agg_autocorrelationparam: 包含 lagaggtype 的字典列表
agg_linear_trendparam: 包含 chunk_lenf_agg 的字典列表
approximate_entropyparam: 包含 mr 的字典列表
ar_coefficientparam: 包含 coeffk 的字典列表
augmented_dickey_fullerparam: 包含 attr 的字典列表
autocorrelationparam: 包含 lag 的字典列表
binned_entropyparam: 包含 max_bins 的字典列表
c3param: 包含 lag 的字典列表
change_quantilesparam: 包含 ql, qh, isabs, 和 f_agg 的字典列表
cid_ceparam: normalize:布尔值(True 或 False)
count_aboveparam: 包含 t 的字典列表
count_above_mean无参数
count_belowparam: 包含 t 的字典列表
count_below_mean无参数
cwt_coefficientsparam: 包含 widths, coeff, 和 w 的字典列表
energy_ratio_by_chunksparam: 包含 num_segmentssegment_focus 的字典列表
fft_aggregatedparam: 包含 aggtype 的字典列表:“centroid”、“variance”、“skew”、“kurtosis”
fft_coefficientparam: 包含 coeffattr 的字典列表
first_location_of_maximum无参数
first_location_of_minimum无参数
friedrich_coefficientsparam: 包含 m, r, 和 coeff 的字典列表
has_duplicate无参数
has_duplicate_max无参数
has_duplicate_min无参数
index_mass_quantileparam: 包含 q 的字典列表
kurtosis无参数
large_standard_deviationparam: 包含 r 的字典列表
last_location_of_maximum无参数
last_location_of_minimum无参数
length无参数
linear_trendparam: 包含 attr 的字典列表:"pvalue":线性回归的 p 值。"rvalue":线性回归的相关系数。"intercept":线性回归的截距。"slope":线性回归的斜率。"stderr":线性回归的标准误差。
longest_strike_above_mean无参数
longest_strike_below_mean无参数
mean无参数
mean_abs_change无参数
mean_change无参数
mean_second_derivative_central无参数
median无参数
number_crossing_mparam: 包含 m 的字典列表
number_cwt_peaksparam: 包含 n 的字典列表
number_peaksparam: 包含 n 的字典列表
partial_autocorrelationparam: 包含 lag 的字典列表
percentage_of_reoccurring_datapoints_to_all_datapoints无参数
percentage_of_reoccurring_values_to_all_values无参数
quantileparam: 包含 q 的字典列表
range_countparam: 包含 minmax 的字典列表
ratio_beyond_r_sigmaparam: 包含 r 的字典列表
ratio_value_number_to_time_series_length无参数
skewness无参数
spkt_welch_densityparam: 包含 coeff 的字典列表
standard_deviation无参数
sum_of_reoccurring_data_points无参数
sum_of_reoccurring_values无参数
sum_of_values无参数
symmetry_lookingparam: 包含 r 的字典列表
time_reversal_asymmetry_statisticparam: 包含 lag 的字典列表
variance无参数
variance_larger_than_standard_deviation无参数

MinimalFCParameters

EfficientFCParameterstsfresh 提供的一种预定义特征提取参数设置,旨在平衡计算效率和特征覆盖范围。它去掉了计算成本较高且冗余的特征,适合在实际应用中快速提取有效特征。

特征提取函数名称参数
abs_energy无参数
mean无参数
median无参数
std无参数
variance无参数
minimum无参数
maximum无参数
mean_abs_change无参数
mean_change无参数
mean_second_derivative_central无参数
first_location_of_maximum无参数
first_location_of_minimum无参数
last_location_of_maximum无参数
last_location_of_minimum无参数
longest_strike_above_mean无参数
longest_strike_below_mean无参数
count_above_mean无参数
count_below_mean无参数
ratio_value_number_to_time_series_length无参数
autocorrelationparam: 包含 lag 的字典列表
fft_coefficientparam: 包含 coeffattr 的字典列表:coeff 是傅里叶系数的索引,attr 是系数的属性,可以是 “real”、“imag”、“abs”、“angle”
linear_trendparam: 包含 attr 的字典列表

EfficientFCParameters

EfficientFCParameterstsfresh 提供的一种预定义特征提取参数设置,旨在平衡计算效率和特征覆盖范围。它去掉了计算成本较高且冗余的特征,适合在实际应用中快速提取有效特征。

特征提取函数名称参数
abs_energy无参数
mean无参数
median无参数
std无参数
variance无参数
minimum无参数
maximum无参数
mean_abs_change无参数
mean_change无参数
mean_second_derivative_central无参数
first_location_of_maximum无参数
first_location_of_minimum无参数
last_location_of_maximum无参数
last_location_of_minimum无参数
longest_strike_above_mean无参数
longest_strike_below_mean无参数
count_above_mean无参数
count_below_mean无参数
ratio_value_number_to_time_series_length无参数
autocorrelationparam: 包含 lag 的字典列表
fft_coefficientparam: 包含 coeffattr 的字典列表
linear_trendparam: 包含 attr 的字典列表

风险提示与免责声明
本文内容基于公开信息研究整理,不构成任何形式的投资建议。历史表现不应作为未来收益保证,市场存在不可预见的波动风险。投资者需结合自身财务状况及风险承受能力独立决策,并自行承担交易结果。作者及发布方不对任何依据本文操作导致的损失承担法律责任。市场有风险,投资须谨慎。

相关文章:

tsfresh:时间序列特征自动提取与应用

tsfresh:时间序列特征自动提取与应用 本文系统介绍了 tsfresh 技术在 A 股市场数据分析与量化投资中的应用。从基础特征提取到高级策略开发,结合实战案例,详细讲解了如何利用 tsfresh 构建量化投资策略,并优化风险控制&#xff0c…...

C++Primer学习(7.1 定义抽象数据类型)

类的基本思想是数据抽象(data abstraction)和封装(encapsulation)。数据抽象是种依赖于接口(interface)和实现(implementation)分离的编程(以及设计)技术。类的接口包括用户所能执行的操作:类的实现则包括类的数据成员、负责接口实现的函数体以及定义类所需的各种私有函数。 封…...

【PHP】新版本特性记录(持续更新)

文章目录 前言PHP 7.01&#xff09;NULL合并运算符&#xff1a;??2&#xff09;参数、返回值支持类型声明3&#xff09;太空船操作符&#xff1a;<>4&#xff09;通过 define 定义常量数组5&#xff09;匿名类实例化6&#xff09;字符串里使用\u转义unicode codepoint …...

《蓝耘容器全栈技术指南:企业级云原生与异构计算实战大全》

在数字化转型的浪潮中&#xff0c;容器技术已成为企业构建云原生架构的核心引擎&#xff0c;而蓝耘容器凭借其轻量化内核、异构计算支持及混合云调度能力&#xff0c;正成为企业级应用的首选方案。本文基于《蓝耘容器全栈技术指南》&#xff0c;结合实战案例与技术原理&#xf…...

【红黑树】—— 我与C++的不解之缘(二十五)

前言 学习了avl树&#xff0c;现在来学习红黑树。 一、什么是红黑树 红黑树是一颗平衡二叉搜索树&#xff0c;它每一个节点增加了一个存储位表示节点的颜色&#xff0c;可以是红色或者黑色。 相比较于AVL树&#xff0c;红黑树也是一个自平衡二叉搜索树&#xff0c;但是它与AVL树…...

驾驭 DeepSeek 科技之翼,翱翔现代学习新天际

在当今这个信息爆炸的时代&#xff0c;学习的方式和途径正在经历着前所未有的变革。人工智能技术的飞速发展&#xff0c;为我们的学习带来了全新的机遇和挑战。DeepSeek 作为一款强大的大语言模型&#xff0c;凭借其卓越的性能和丰富的功能&#xff0c;为现代学习注入了新的活力…...

DeepSeek本地部署 (Windows+Ollama+Docker Desktop+ RAGFlow)

适用场景&#xff1a; 1、商城的小机器人自动根据实际情况回复 2、需要7*24小时运行在线回复&#xff0c;如&#xff1a;在线购物、在线咨询、在线招生等 3、无人值守环境 2025年1月&#xff0c;DeepSeek 正式发布 DeepSeek-R1 推理大模型&#xff0c;DeepSeek-R1 成本价格低…...

SPI驱动(八) -- SPI_DAC设备驱动程序

文章目录 参考资料&#xff1a;一、编写设备树二、 编写驱动程序三、编写测试APP四、Makefile五、上机实验 参考资料&#xff1a; 参考资料&#xff1a; 内核头文件&#xff1a;include\linux\spi\spi.h内核文档&#xff1a;Documentation\spi\spidevDAC芯片手册&#xff1a;…...

MySQL 衍生表(Derived Tables)

在SQL的查询语句select …. from …中&#xff0c;跟在from子句后面的通常是一张拥有定义的实体表&#xff0c;而有的时候我们会用子查询来扮演实体表的角色&#xff0c;这个在from子句中的子查询会返回一个结果集&#xff0c;这个结果集可以像普通的实体表一样查询、连接&…...

Day16:最小的k个数

仓库管理员以数组 stock 形式记录商品库存表&#xff0c;其中 stock[i] 表示对应商品库存余量。请返回库存余量最少的 cnt 个商品余量&#xff0c;返回 顺序不限。 示例 1&#xff1a; 输入&#xff1a;stock [2,5,7,4], cnt 1 输出&#xff1a;[2]示例 2&#xff1a; 输入…...

MinIo前后端实现

这几天想玩玩Minio&#xff0c;整体来说简单使用起来不复杂&#xff08;当然也有可能是我配置的太少了&#xff09; Minio下载 我是通过Dokcer在虚拟机上下载的&#xff08;Docker真好用啊&#xff09; 拉取Minio镜像 docker pull minio/minio启动Minio容器 docker run -d …...

HarmonyOS NEXT开发进阶(十二):build-profile.json5 文件解析

文章目录 一、前言二、Hvigor脚本文件三、任务与任务依赖图四、多模块管理4.1 静态配置模块 五、分模块编译六、配置多目标产物七、配置APP多目标构建产物八、定义 product 中包含的 target九、拓展阅读 一、前言 编译构建工具DevEco Hvigor&#xff08;以下简称Hvigor&#x…...

利用 OpenCV 库进行实时目标物体检测

一、代码概述 此代码利用 OpenCV 库实现了基于特征匹配的实时物体检测系统。通过摄像头捕获实时视频帧&#xff0c;将其与预先加载的参考图像进行特征匹配&#xff0c;从而识别出视频帧中是否存在与参考图像匹配的物体。 二、环境依赖 OpenCV&#xff1a;用于图像处理、特征提…...

深度学习笔记(37周)

目录 摘要 Abstracts 1. 介绍 2. 相关工作 3. 模型 3.1 时序段网络TSN 3.2 学习时序段网络 4. 训练结果 5. 结论 摘要 本周阅读的论文是《Temporal Segment Networks: Towards Good Practices for Deep Action Recognition》。作者主要想通过较少的训练样本&#xff…...

Vue2+Vant2 项目初学

Vant 2 - Mobile UI Components built on Vue Vue.js 安装 | 菜鸟教程 // 通过脚手架安装 // 在新项目中使用 Vant 时&#xff0c;推荐使用 Vue 官方提供的脚手架 Vue Cli 创建项目并安装 Vant。 // # 安装 Vue Cli // npm install -g vue/cli // # 创建一个项目 // vue …...

ELK+Filebeat+Kafka+Zookeeper安装部署

1.安装zookeeper zookpeer下载地址:apache-zookeeper-3.7.1-bin.tar.gzhttps://link.csdn.net/?targethttps%3A%2F%2Fwww.apache.org%2Fdyn%2Fcloser.lua%2Fzookeeper%2Fzookeeper-3.7.1%2Fapache-zookeeper-3.7.1-bin.tar.gz%3Flogin%3Dfrom_csdn 1.1解压安装zookeeper软件…...

【接口封装】——21、解析Json对象数组的文本块

解释&#xff1a; 1、封装内容&#xff1a;Json数组的数据处理 Json 数组&#xff1a;[[ {"txt" : "你好"}, { "img", "1"} , {"txt" : "世界"} ], [ {"txt" : "你好"} ]] 数组内的文本块&am…...

【软考-架构】3.3、模式分解-事务并发-封锁协议

✨资料&文章更新✨ GitHub地址&#xff1a;https://github.com/tyronczt/system_architect 文章目录 模式分解&#xff08;难点&#xff09;无损分解&#x1f4af;考试真题并发控制封锁协议&#x1f4af;考试真题第一题第二题 模式分解&#xff08;难点&#xff09; 保持函…...

审批工作流系统xFlow

WorkFlow-审批流程系统 该项目为完全开源免费项目 可用于学习或搭建初始化审批流程系统 希望有用的小伙伴记得点个免费的star gitee仓库地址 仿钉钉飞书工作审批流系统 介绍 前端技术栈: vue3 ts vite arcodesign eslint 后端技术栈:springbootspring mvc mybatis mavenmysq…...

【数据结构初阶第十九节】八大排序系列(下篇)—[详细动态图解+代码解析]

hello&#xff0c;好久不见&#xff01; 云边有个稻草人-CSDN博客 上篇内容&#xff0c;回顾一下吧【数据结构初阶第十八节】八大排序系列(上篇)—[详细动态图解代码解析]-CSDN博客 今天我们来学习下篇 目录 &#xff08;2&#xff09;快速排序 【挖坑法】 —思路 —思路…...

定制开发开源 AI 智能名片 S2B2C 商城小程序源码在小程序直播营销中的应用与价值

摘要&#xff1a; 本文主要探讨了定制开发开源 AI 智能名片 S2B2C 商城小程序源码在小程序直播营销中的应用与价值。首先详细阐述了小程序直播的基本概念、特点、发展历程及营销意义&#xff0c;包括其便捷性、广泛的受众连接能力以及对企业推广的重要作用。接着深入剖析了定制…...

蓝桥杯Python赛道备赛——Day3:排序算法(二)(归并排序、堆排序、桶排序)

本博客是蓝桥杯备赛系列中排序算法的第二期&#xff0c;包括&#xff1a;归并排序、堆排序和桶排序。每一个算法都在给出概念解释的同时&#xff0c;给出了示例代码&#xff0c;以供低年级师弟师妹们学习和练习。 由于本期的三个算法的复杂度相对来说要高于上一期的三个算法&am…...

Type-C:智能家居的电力革命与空间美学重构

在万物互联的时代浪潮中&#xff0c;家居空间正经历着从功能容器到智慧终端的蜕变。当意大利设计师安东尼奥奇特里奥提出"消失的设计"理念二十年后&#xff0c;Type-C充电技术正以润物无声的方式重塑着现代家居的形态与内核&#xff0c;开启了一场静默的居住革命。 【…...

第十五届蓝桥杯C/C++组:宝石组合题目(从小学奥数到编程题详解)

这道题目真的一看就不好做&#xff0c;如果直接暴力去做百分之90必挂掉&#xff0c;那么这道题目到底应该怎么去做呢&#xff1f;这我们就得从小学奥数开始聊了。&#xff08;闲话&#xff1a;自从开始蓝桥杯备赛后&#xff0c;每天都在被小学奥数震惊&#xff0c;为什么我小的…...

@RequestParam、@RequestBody、@PathVariable

1. RequestParam RequestParam&#xff1a;重要的是它的属性&#xff0c;如果它的属性用不到&#xff0c;这个注解可以不用 要点&#xff1a; 可用于任何类型的请求&#xff08;get请求数据在请求行中&#xff0c; post请求数据在请求体中&#xff09;无论时在请求行还是请求体…...

ECharts中Map(地图)样式配置、渐变色生成

前言 ECharts是我们常用的图表控件&#xff0c;功能特别强大&#xff0c;每次使用都要查API比较繁琐&#xff0c;这里就记录开发中常用的配置。 官网&#xff1a;https://echarts.apache.org/handbook/zh/get-started 配置项&#xff1a;https://echarts.apache.org/zh/opti…...

什么是 slot-scope?怎么理解。

1. 什么是 slot-scope&#xff1f; slot-scope 是 Vue 2 中用于作用域插槽的语法。它的作用是让子组件可以把一些数据传递给父组件&#xff0c;父组件可以根据这些数据自定义渲染内容。 简单来说&#xff1a; 子组件&#xff1a;负责提供数据。 父组件&#xff1a;负责根据数…...

MySQL | MySQL表的增删改查(CRUD)

目录 前言&#xff1a;什么是 CRUD ?一、Creat 新增1.1 语法1.2 示例1.2.1 单行数据全列插入1.2.2 单行数据指定列插入1.2.3 多行数据指定列插入 二、Retrieve 检索2.1 语法2.2 示例2.2.1 全列查询2.2.2 指定列查询2.2.3 查询字段为表达式2.2.4 结果去重查询2.2.5 where条件查…...

电子电气架构 --- 分布到集中的动カ系统及基于域控制器的架构

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所有人的看法和评价都是暂时的,只有自己的经历是伴随一生的,几乎所有的担忧和畏惧,都是来源于自己的想象,只有你真的去做了,才会发现有多快乐。…...

Docker系列——从零开始打包FunASR的Http服务

一、项目结构准备 funasr-docker/ ├── Dockerfile ├── requirements.txt ├── models/ # 预下载模型目录&#xff08;可选&#xff09; ├── config/ # 自定义配置文件 │ └── server_config.py └── run.sh # 服务…...