tsfresh:时间序列特征自动提取与应用
本文系统介绍了 tsfresh 技术在 A 股市场数据分析与量化投资中的应用。从基础特征提取到高级策略开发,结合实战案例,详细讲解了如何利用 tsfresh 构建量化投资策略,并优化风险控制,助力读者全面掌握时间序列特征提取在量化领域的技术应用。
文中内容仅限技术学习与代码实践参考,市场存在不确定性,技术分析需谨慎验证,不构成任何投资建议。适合量化新手建立系统认知,为策略开发打下基础。
第一章:tsfresh 技术概述与环境搭建
1.1 tsfresh 简介
tsfresh 是一个用于时间序列特征提取的 Python 库,它能够自动从时间序列数据中提取大量特征,并通过统计检验筛选出与目标变量相关的特征,简化了时间序列数据分析流程,广泛应用于预测维护、金融分析等领域。
1.2 环境搭建
tsfresh 安装
bash
pip install "tsfresh[dask]"
验证安装成功与否
安装完成后,可以通过以下Python代码验证tsfresh是否安装成功:
python
import tsfresh
print(tsfresh.__version__)
如果输出了版本号,说明安装成功。
相关依赖库安装
bash
# 安装 pandas、numpy、matplotlib 等库
pip install pandas numpy matplotlib
Tushare 数据接口申请与配置
- 访问 Tushare 官网 注册账号并获取 API Token。
- 安装 Tushare Python SDK:
bash
pip install tushare
- 配置 Tushare API:
python
import tushare as ts
ts.set_token("your_token") # 替换为你的Tushare Token
pro = ts.pro_api()
1.3 数据准备
使用 Tushare 获取 A 股市场数据
python
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是一种高效的列式存储格式,适用于大数据处理。它具有高压缩比和快速读取的特点,适合存储大规模数据。
推荐阅读:
python
# 将获取的数据存储为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())
数据清洗与预处理
python
# 检查缺失值
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 基本特征提取方法
统计特征
统计特征是最基本的特征类型,包括均值、方差、中位数、极值等。这些特征能够反映时间序列数据的集中趋势和离散程度。
python
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_data
ts_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)
时间域特征
时间域特征关注时间序列在时间维度上的变化特性,如趋势、周期性、波动性等。
python
# 定义要提取的时间域特征
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)
频域特征
频域特征通过傅里叶变换等方法将时间序列数据转换到频域,提取频率成分、功率谱等信息。
python
# 提取频域特征
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 股某股票的历史价格数据进行基本特征提取
python
# 综合提取统计特征、时间域特征和频域特征
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 random
sampled_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 的强大之处在于其能够自动从时间序列数据中提取大量特征,无需手动定义每个特征。
python
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())
特征筛选与选择
提取大量特征后,需要进行筛选以选择与目标变量相关的特征,减少维度并提高模型性能。
python
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 股市场时间序列特征
多只股票数据的特征提取
python
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_multi
ts_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())
不同时间周期数据的特征对比
python
# 获取日线、周线、月线数据
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 features
daily_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())
特征可视化与解读
python
# 可视化某只股票的特征分布
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 进行时间序列分类
特征提取与选择
python
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())
分类模型训练与评估
python
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 股股票进行分类
python
# 获取多只股票的数据并提取特征
# 假设我们已经获取了多只股票的数据并存储在 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 进行时间序列回归
python
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 股股票的未来价格走势
python
# 获取股票历史数据并提取特征
# 假设我们已经获取了股票数据并存储在 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 构建量化投资策略
特征工程与策略设计
python
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
)
策略回测与评估
python
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) / peak
max_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)
风险控制与优化
python
# 风险控制
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
提供的预定义字典及其说明:
- ComprehensiveFCParameters
- 说明 :包含所有特征提取函数,以及所有可能的参数组合。这是
tsfresh
默认的特征提取设置,如果不指定default_fc_parameters
,则会使用此设置。 - 特点:计算全面,但计算成本较高。
- MinimalFCParameters
- 说明:只包含少量特征提取函数,用于快速测试。
- 特点:计算速度快,但特征覆盖范围有限。
- EfficientFCParameters
- 说明 :与
ComprehensiveFCParameters
类似,但去掉了标记为"高计算成本"的特征。 - 特点:在计算效率和特征覆盖之间取得了平衡,适合对运行时间要求较高的场景。
ComprehensiveFCParameters
ComprehensiveFCParameters
是 tsfresh
提供的一个预定义字典,用于提取时间序列的全面特征集合。它包含了所有无参数的特征提取函数,以及所有有参数的特征提取函数及其不同的参数组合。
特征提取函数名称 | 参数 |
---|---|
abs_energy |
无参数 |
absolute_sum_of_changes |
无参数 |
agg_autocorrelation |
param : 包含 lag 和 aggtype 的字典列表 |
agg_linear_trend |
param : 包含 chunk_len 和 f_agg 的字典列表 |
approximate_entropy |
param : 包含 m 和 r 的字典列表 |
ar_coefficient |
param : 包含 coeff 和 k 的字典列表 |
augmented_dickey_fuller |
param : 包含 attr 的字典列表 |
autocorrelation |
param : 包含 lag 的字典列表 |
binned_entropy |
param : 包含 max_bins 的字典列表 |
c3 |
param : 包含 lag 的字典列表 |
change_quantiles |
param : 包含 ql , qh , isabs , 和 f_agg 的字典列表 |
cid_ce |
param : normalize:布尔值(True 或 False) |
count_above |
param : 包含 t 的字典列表 |
count_above_mean |
无参数 |
count_below |
param : 包含 t 的字典列表 |
count_below_mean |
无参数 |
cwt_coefficients |
param : 包含 widths , coeff , 和 w 的字典列表 |
energy_ratio_by_chunks |
param : 包含 num_segments 和 segment_focus 的字典列表 |
fft_aggregated |
param : 包含 aggtype 的字典列表:"centroid"、"variance"、"skew"、"kurtosis" |
fft_coefficient |
param : 包含 coeff 和 attr 的字典列表 |
first_location_of_maximum |
无参数 |
first_location_of_minimum |
无参数 |
friedrich_coefficients |
param : 包含 m , r , 和 coeff 的字典列表 |
has_duplicate |
无参数 |
has_duplicate_max |
无参数 |
has_duplicate_min |
无参数 |
index_mass_quantile |
param : 包含 q 的字典列表 |
kurtosis |
无参数 |
large_standard_deviation |
param : 包含 r 的字典列表 |
last_location_of_maximum |
无参数 |
last_location_of_minimum |
无参数 |
length |
无参数 |
linear_trend |
param : 包含 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_m |
param : 包含 m 的字典列表 |
number_cwt_peaks |
param : 包含 n 的字典列表 |
number_peaks |
param : 包含 n 的字典列表 |
partial_autocorrelation |
param : 包含 lag 的字典列表 |
percentage_of_reoccurring_datapoints_to_all_datapoints |
无参数 |
percentage_of_reoccurring_values_to_all_values |
无参数 |
quantile |
param : 包含 q 的字典列表 |
range_count |
param : 包含 min 和 max 的字典列表 |
ratio_beyond_r_sigma |
param : 包含 r 的字典列表 |
ratio_value_number_to_time_series_length |
无参数 |
skewness |
无参数 |
spkt_welch_density |
param : 包含 coeff 的字典列表 |
standard_deviation |
无参数 |
sum_of_reoccurring_data_points |
无参数 |
sum_of_reoccurring_values |
无参数 |
sum_of_values |
无参数 |
symmetry_looking |
param : 包含 r 的字典列表 |
time_reversal_asymmetry_statistic |
param : 包含 lag 的字典列表 |
variance |
无参数 |
variance_larger_than_standard_deviation |
无参数 |
MinimalFCParameters
EfficientFCParameters
是 tsfresh
提供的一种预定义特征提取参数设置,旨在平衡计算效率和特征覆盖范围。它去掉了计算成本较高且冗余的特征,适合在实际应用中快速提取有效特征。
特征提取函数名称 | 参数 |
---|---|
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 |
无参数 |
autocorrelation |
param : 包含 lag 的字典列表 |
fft_coefficient |
param : 包含 coeff 和 attr 的字典列表:coeff 是傅里叶系数的索引,attr 是系数的属性,可以是 "real"、"imag"、"abs"、"angle" |
linear_trend |
param : 包含 attr 的字典列表 |
EfficientFCParameters
EfficientFCParameters
是 tsfresh
提供的一种预定义特征提取参数设置,旨在平衡计算效率和特征覆盖范围。它去掉了计算成本较高且冗余的特征,适合在实际应用中快速提取有效特征。
特征提取函数名称 | 参数 |
---|---|
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 |
无参数 |
autocorrelation |
param : 包含 lag 的字典列表 |
fft_coefficient |
param : 包含 coeff 和 attr 的字典列表 |
linear_trend |
param : 包含 attr 的字典列表 |
风险提示与免责声明
本文内容基于公开信息研究整理,不构成任何形式的投资建议。历史表现不应作为未来收益保证,市场存在不可预见的波动风险。投资者需结合自身财务状况及风险承受能力独立决策,并自行承担交易结果。作者及发布方不对任何依据本文操作导致的损失承担法律责任。市场有风险,投资须谨慎。