问题描述
如标题,是Min-max还是 Z-score?
解决方案
在 JoinQuant(聚宽)量化平台的因子数据处理函数中,standardlize 函数采用的标准化算法是 Z-score 标准化。
1. 算法说明
根据 JoinQuant API 文档的明确说明,standardlize 函数对应的是 标准化(z-score)。Z-score 标准化(也称为标准差标准化)会将数据按其特征的均值和标准差进行处理,处理后的数据符合标准正态分布,即均值为 0,标准差为 1。
2. API 用法详解
standardlize(series, inf2nan=True, axis=1)
参数说明:
data:pd.Series/pd.DataFrame/np.array,待标准化的序列。inf2nan: 布尔值,是否将np.inf和-np.inf替换成np.nan。默认为True。axis: 默认为1。在data为pd.DataFrame时使用,指定沿哪个方向做标准化。0为对每列做标准化,1为对每行做标准化。
返回值:
返回标准化(Z-score)后的因子数据。
3. 代码示例
以下是在 JoinQuant 平台中使用 standardlize 函数进行数据标准化的示例代码:
# 导入需要的函数库
import pandas as pd
import numpy as np
from jqfactor import standardlize
from jqdata import get_index_stocks
# 生成模拟数据
data = pd.DataFrame(
np.random.rand(3, 300),
columns=get_index_stocks('000300.XSHG', date='2018-05-02'),
index=['a', 'b', 'c']
)
# 对数据进行 Z-score 标准化处理(按列)
standardized_data = standardlize(data, inf2nan=True, axis=0)
综上所述,如果您在聚宽平台上进行多因子策略开发并需要对因子进行标准化处理,直接调用 standardlize 即可实现 Z-score 标准化,无需手动编写算法。